[maemo-commits] [maemo-commits] r12435 - in projects/haf/trunk/hildon-desktop: . libhildonwm src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Jun 22 19:17:09 EEST 2007
- Previous message: [maemo-commits] r12434 - projects/haf/tags/libhildonmime
- Next message: [maemo-commits] r12436 - projects/haf/trunk/hildon-desktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart Date: 2007-06-22 19:17:07 +0300 (Fri, 22 Jun 2007) New Revision: 12435 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/libhildonwm/Makefile.am projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.c projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.h projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.c projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.h projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.h projects/haf/trunk/hildon-desktop/src/hd-desktop.c Log: 2007-06 22 Moises Martinez <moises.martinez at nokia.com> * src/hd-desktop.c: - Moved UI part of ping timeout to hd-desktop. * libhildonwm/hd-wm.[ch]: - Code cleaned. Added new signal when application freezes. * libhildonwm/hd-wm-application.[ch]: - Removed Hildon* code. - Code cleanup. * libhildonwm/hd-wm-window.c: - Removed Hildon* code. - Code cleanup. * libhildonwm/Makefile.am: - Depends only on GTK. * ChangeLog updated. Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-22 16:17:07 UTC (rev 12435) @@ -1,3 +1,18 @@ +2007-06 22 Moises Martinez <moises.martinez at nokia.com> + + * src/hd-desktop.c: + - Moved UI part of ping timeout to hd-desktop. + * libhildonwm/hd-wm.[ch]: + - Code cleaned. Added new signal when application freezes. + * libhildonwm/hd-wm-application.[ch]: + - Removed Hildon* code. + - Code cleanup. + * libhildonwm/hd-wm-window.c: + - Removed Hildon* code. + - Code cleanup. + * libhildonwm/Makefile.am: + - Depends only on GTK. + 2007-06 21 Moises Martinez <moises.martinez at nokia.com> * libhildonwm/hd-wm-watched-window.[ch]: Modified: projects/haf/trunk/hildon-desktop/libhildonwm/Makefile.am =================================================================== --- projects/haf/trunk/hildon-desktop/libhildonwm/Makefile.am 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/libhildonwm/Makefile.am 2007-06-22 16:17:07 UTC (rev 12435) @@ -17,6 +17,7 @@ INCLUDES = \ $(HILDON_CFLAGS) \ + $(GTK_CFLAGS) \ $(GDK_CFLAGS) \ $(GCONF_CFLAGS) \ $(GNOME_VFS_CFLAGS) \ @@ -51,6 +52,7 @@ hd-entry-info.c libhildonwm_la_LIBADD = \ + $(GTK_LIBS) \ $(GDK_LIBS) \ $(GCONF_LIBS) \ $(GNOME_VFS_LIBS) \ Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.c 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.c 2007-06-22 16:17:07 UTC (rev 12435) @@ -96,7 +96,7 @@ gchar *exec_name; /* class || exec field ? */ gchar *class_name; gchar *text_domain; - GtkWidget *ping_timeout_note; /* The note that is shown when the app quits responding */ + GObject *ping_timeout_note; /* The note that is shown when the app quits responding */ HDWMWindow *active_window; HDWMApplicationFlags flags; HDEntryInfo *info; @@ -166,14 +166,6 @@ gpointer value, gpointer user_data); -static void -hd_wm_launch_banner_info_free (HDWMLaunchBannerInfo* info) -{ - g_return_if_fail(info); - - g_free(info->msg); - g_free(info); -} HDWMApplication* hd_wm_application_new_dummy (void) @@ -563,132 +555,12 @@ } void -hd_wm_application_died_dialog_show(HDWMApplication *app) +hd_wm_application_set_ping_timeout_note (HDWMApplication *app, GObject *note) { - GtkWidget *dialog; - gchar *text; - text = g_strdup_printf(dgettext("ke-recv", "memr_ni_application_closed_no_resources"), - app->priv->app_name ? _(app->priv->app_name) : ""); - dialog = hildon_note_new_information(NULL, text); - gtk_widget_show_all(dialog); - gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - g_free(text); -} - -/* Launch Banner Dialog */ - -/* FIXME: rename namespace to watched app */ -void -hd_wm_application_launch_banner_show (HDWMApplication *app) -{ - HDWMLaunchBannerInfo *info; - guint interval; - gchar *lapp_name; - - g_return_if_fail(app); - - interval = HDWM_APPLICATION_LAUNCH_BANNER_CHECK_INTERVAL * 1000; - - info = g_new0(HDWMLaunchBannerInfo, 1); - - info->app = app; - - gettimeofday( &info->launch_time, NULL ); - - gdk_error_trap_push(); /* Needed ? */ - - lapp_name = (app->priv->text_domain?dgettext(app->priv->text_domain,app->priv->app_name): - gettext(app->priv->app_name)); - - info->msg = g_strdup_printf(_(hd_wm_application_is_hibernating(app) ? - HDWM_APPLICATION_LAUNCH_BANNER_MSG_RESUMING : - HDWM_APPLICATION_LAUNCH_BANNER_MSG_LOADING ), - lapp_name ? _(lapp_name) : "" ); - - info->banner = hildon_banner_show_animation(NULL, NULL, info->msg); - gdk_error_trap_pop(); - - g_timeout_add(interval, hd_wm_application_launch_banner_timeout, info); - -} - -void -hd_wm_application_launch_banner_close (GtkWidget *parent, - HDWMLaunchBannerInfo *info) -{ - if (!(info && info->msg)) - return; - - if(info->banner) - gtk_widget_destroy(info->banner); - - hd_wm_launch_banner_info_free(info); -} - -gboolean -hd_wm_application_launch_banner_timeout (gpointer data) -{ - HDWMLaunchBannerInfo *info = data; - struct timeval current_time; - long unsigned int t1, t2; - guint time_left; - gulong current_banner_timeout = 0; - - /* Added by Karoliina Salminen 26092005 - * Addition to low memory situation awareness, the following - * multiplies the launch banner timeout with the timeout - * multiplier found from environment variable - */ - if(hd_wm_is_lowmem_situation()) - current_banner_timeout - = hd_wm_get_lowmem_banner_timeout()*hd_wm_get_lowmem_timeout_multiplier(); - - else - current_banner_timeout = hd_wm_get_lowmem_banner_timeout(); - - /* End of addition 26092005 */ - -#if 0 // needed ??? - if ( find_service_from_tree( hnwm->callbacks.model, - &iter, - info->service_name ) > 0) - { - } else { - /* This should never happen. Bail out! */ - return FALSE; - } -#endif - - gettimeofday( ¤t_time, NULL ); - - t1 = (long unsigned int) info->launch_time.tv_sec; - t2 = (long unsigned int) current_time.tv_sec; - time_left = (guint) (t2 - t1); - - /* The following uses now current_banner_timeout instead of - * lowmem_banner_timeout, changed by - * Karoliina Salminen 26092005 - */ - if (time_left >= current_banner_timeout - || hd_wm_application_has_windows (info->app)) - { - /* Close the banner */ - hd_wm_application_launch_banner_close( NULL, info ); - - return FALSE; - } - - return TRUE; -} - -void -hd_wm_application_set_ping_timeout_note(HDWMApplication *app, GtkWidget *note) -{ app->priv->ping_timeout_note = note; } -GtkWidget* +GObject * hd_wm_application_get_ping_timeout_note(HDWMApplication *app) { return app->priv->ping_timeout_note; Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.h =================================================================== --- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.h 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-application.h 2007-06-22 16:17:07 UTC (rev 12435) @@ -270,14 +270,6 @@ gboolean hibernate); /** - * Shows application died dialog - * - * @param app HDWMApplication instance - */ -void -hd_wm_application_died_dialog_show (HDWMApplication *app); - -/** * FIXME: CAn be static ? * Shows launch banner for app * @@ -287,29 +279,10 @@ void hd_wm_application_launch_banner_show (HDWMApplication *app); -/** - * FIXME: Can be static ? - * - * @param parent - */ -void -hd_wm_application_launch_banner_close (GtkWidget *parent, - HDWMLaunchBannerInfo *info); - -/** - * FIXME: this can be static - * - * @param data - * - * @return - */ -gboolean -hd_wm_application_launch_banner_timeout (gpointer data); - void -hd_wm_application_set_ping_timeout_note (HDWMApplication *app, GtkWidget *note); +hd_wm_application_set_ping_timeout_note (HDWMApplication *app, GObject *note); -GtkWidget* +GObject * hd_wm_application_get_ping_timeout_note (HDWMApplication *app); HDWMWindow * Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.c 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.c 2007-06-22 16:17:07 UTC (rev 12435) @@ -146,8 +146,8 @@ hd_wm_window_finalize (GObject *object) { HDWMWindow *win = HD_WM_WINDOW (object); - GtkWidget *note; - HDWM *hdwm = hd_wm_get_singleton (); + GObject *note; + HDWM *hdwm = hd_wm_get_singleton (); HN_DBG("Removing '%s'", win->priv->name); @@ -168,14 +168,16 @@ g_strdup_printf (PING_TIMEOUT_RESPONSE_STRING, win->priv->name); /* Show the infoprint */ - hildon_banner_show_information (NULL, NULL, response_message); + g_debug ("TODO: %s hildon_banner_show_information (NULL, NULL, response_message);", + response_message); - g_free (response_message); + g_free (response_message); - /* .. destroy the infonote */ - gtk_widget_destroy (note); - hd_wm_application_set_ping_timeout_note (win->priv->app_parent, NULL); - } + /* .. destroy the infonote */ + g_object_unref (note); + + hd_wm_application_set_ping_timeout_note (win->priv->app_parent, NULL); + } if(win->priv->info) { @@ -857,84 +859,6 @@ win->priv->xwin = None; } -static void -hd_wm_ping_timeout_dialog_response (GtkDialog *note, gint ret, gpointer data) -{ - HDWMWindow *win = (HDWMWindow *)data; - HDWMApplication *app = hd_wm_window_get_application (win); - - gtk_widget_destroy (GTK_WIDGET(note)); - hd_wm_application_set_ping_timeout_note (app, NULL); - - if (ret == GTK_RESPONSE_OK) - { - /* Kill the app */ - if (!hd_wm_window_attempt_signal_kill (win, SIGKILL, FALSE)) - g_debug ("hd_wm_ping_timeout:failed to kill application '%s'.", win->priv->name); - } -} - -void -hd_wm_ping_timeout (HDWMWindow *win) -{ - GtkWidget *note; - - HDWMApplication *app = hd_wm_window_get_application (win); - - gchar *timeout_message = - g_strdup_printf (PING_TIMEOUT_MESSAGE_STRING, win->priv->name ); - - /* FIXME: Do we need to check if the note already exists? */ - note = hd_wm_application_get_ping_timeout_note (app); - - if (note && GTK_IS_WIDGET(note)) - { - g_debug ("hd_wm_ping_timeout: the note already exists."); - goto cleanup_and_exit; - } - - note = hildon_note_new_confirmation (NULL, timeout_message); - - hd_wm_application_set_ping_timeout_note (app, note); - - hildon_note_set_button_texts (HILDON_NOTE(note), - PING_TIMEOUT_BUTTON_OK_STRING, - PING_TIMEOUT_BUTTON_CANCEL_STRING); - - g_signal_connect (G_OBJECT (note), - "response", - G_CALLBACK (hd_wm_ping_timeout_dialog_response), - win); - - gtk_widget_show_all (note); - -cleanup_and_exit: - - g_free( timeout_message ); -} - - -void -hd_wm_ping_timeout_cancel (HDWMWindow *win) -{ - HDWMApplication *app = hd_wm_window_get_application (win); - - GtkWidget *note = hd_wm_application_get_ping_timeout_note(app); - - gchar *response_message = - g_strdup_printf (PING_TIMEOUT_RESPONSE_STRING, win->priv->name); - - if (note && GTK_IS_WIDGET (note)) { - gtk_dialog_response (GTK_DIALOG(note), GTK_RESPONSE_CANCEL); - } - - /* Show the infoprint */ - hildon_banner_show_information (NULL, NULL, response_message ); - - g_free (response_message); -} - - /* * Closes window and associated views (if any), handling hibernated * applications according to the UI spec. Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.h =================================================================== --- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.h 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-window.h 2007-06-22 16:17:07 UTC (rev 12435) @@ -156,12 +156,6 @@ hd_wm_window_destroy (HDWMWindow *win); void -hd_wm_ping_timeout( HDWMWindow *win ); - -void -hd_wm_ping_timeout_cancel( HDWMWindow *win ); - -void hd_wm_window_close (HDWMWindow *win); void Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c 2007-06-22 16:17:07 UTC (rev 12435) @@ -36,19 +36,14 @@ #include <gdk/gdkx.h> #include <gdk/gdkevents.h> #include <libgnomevfs/gnome-vfs.h> +#include <glib/gi18n.h> -#ifdef HAVE_LIBHILDON -#include <hildon/hildon-defines.h> -#include <hildon/hildon-window.h> -#else -#include <hildon-widgets/hildon-defines.h> -#include <hildon-widgets/hildon-window.h> -#endif - #ifdef HAVE_LIBOSSO #include <libosso.h> #endif +#include <hildon/hildon-window.h> + #define DBUS_API_SUBJECT_TO_CHANGE #include <dbus/dbus.h> @@ -116,6 +111,9 @@ HDWM_SHOW_A_MENU_SIGNAL, HDWM_LONG_PRESS_KEY, HDWM_APPLICATION_STARTING_SIGNAL, + HDWM_APPLICATION_DIED_SIGNAL, + HDWM_APPLICATION_FROZEN_SIGNAL, + HDWM_APPLICATION_FROZEN_CANCEL_SIGNAL, HDWM_FULLSCREEN, HDWM_CLOSE_APP, HDWM_SIGNALS @@ -304,7 +302,7 @@ "UTF8_STRING", - "_NET_WM_STARTUP_INFO" + "_NET_STARTUP_INFO" }; XInternAtoms (GDK_DISPLAY(), @@ -565,6 +563,8 @@ static DBusHandlerResult hd_wm_dbus_signal_handler (DBusConnection *conn, DBusMessage *msg, void *data) { + HDWM *hdwm = HD_WM (data); + if (dbus_message_is_signal(msg, MAEMO_LAUNCHER_SIGNAL_IFACE, APP_DIED_SIGNAL_NAME)) { @@ -595,12 +595,17 @@ filename, pid, status); /* Is this 'filename' watchable ? */ - app = hd_wm_lookup_application_via_exec(filename); + app = hd_wm_lookup_application_via_exec (filename); + if (app) { - g_debug ("Showing app died dialog ..."); - hd_wm_application_died_dialog_show(app); + gchar *text = + g_strdup_printf (dgettext("ke-recv", "memr_ni_application_closed_no_resources"), + hd_wm_application_get_name (app) ? _(hd_wm_application_get_name (app)) : ""); + + g_signal_emit_by_name (hdwm, "application-died", text); } + return DBUS_HANDLER_RESULT_HANDLED; } @@ -919,6 +924,39 @@ 1, G_TYPE_POINTER); + hdwm_signals[HDWM_APPLICATION_DIED_SIGNAL] = + g_signal_new("application-died", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (HDWMClass,application_died), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, + 1, + G_TYPE_POINTER); + + hdwm_signals[HDWM_APPLICATION_FROZEN_SIGNAL] = + g_signal_new("application-frozen", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (HDWMClass,window_frozen), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + G_TYPE_OBJECT); + + hdwm_signals[HDWM_APPLICATION_FROZEN_CANCEL_SIGNAL] = + g_signal_new("application-frozen-cancel", + G_OBJECT_CLASS_TYPE(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (HDWMClass,window_frozen_cancel), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + G_TYPE_OBJECT); + hdwm_signals[HDWM_FULLSCREEN] = g_signal_new("fullscreen", G_OBJECT_CLASS_TYPE(object_class), @@ -2335,7 +2373,7 @@ if (((XEvent*)xevent)->type == ClientMessage) { XClientMessageEvent *cev = (XClientMessageEvent *)xevent; - +g_debug ("----------->>>>>>>> Message type %lx",cev->message_type); if (cev->message_type == hdwm->priv->atoms[HD_ATOM_HILDON_FROZEN_WINDOW]) { Window xwin_hung; @@ -2351,9 +2389,11 @@ if (win) { if ( has_reawoken == TRUE ) - hd_wm_ping_timeout_cancel (win); + g_signal_emit_by_name (hdwm, "application-frozen-cancel", win); + /*hd_wm_ping_timeout_cancel (win);**/ else - hd_wm_ping_timeout (win); + g_signal_emit_by_name (hdwm, "application-frozen", win); + /*hd_wm_ping_timeout (win);*/ } else if (cev->message_type == hdwm->priv->atoms[HD_ATOM_HILDON_TN_ACTIVATE]) @@ -2366,7 +2406,11 @@ } else if (cev->message_type == hdwm->priv->atoms[HD_ATOM_STARTUP_INFO]) + { g_debug ("-------## ->>>>>>>>> hello %s <<<<<<<<<<---",(gchar *)cev->data.l); + + return GDK_FILTER_CONTINUE; + } } else if (((XEvent*)xevent)->type == KeyPress) Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.h =================================================================== --- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.h 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.h 2007-06-22 16:17:07 UTC (rev 12435) @@ -144,7 +144,10 @@ void (*entry_info_stack_changed) (HDWM *hdwm,HDEntryInfo *info); void (*work_area_changed) (HDWM *hdwm,GdkRectangle *work_area); void (*show_menu) (HDWM *hdwm); - void (*application_starting) (HDWM *hdwm, gchar *application); + void (*application_starting) (HDWM *hdwm, gpointer application); + void (*application_died) (HDWM *hdwm, gpointer application); + void (*window_frozen) (HDWM *hdwm, HDWMWindow *window); + void (*window_frozen_cancel) (HDWM *hdwm, HDWMWindow *window); /* */ }; Modified: projects/haf/trunk/hildon-desktop/src/hd-desktop.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-desktop.c 2007-06-22 15:51:03 UTC (rev 12434) +++ projects/haf/trunk/hildon-desktop/src/hd-desktop.c 2007-06-22 16:17:07 UTC (rev 12435) @@ -62,6 +62,13 @@ #define HD_DESKTOP_CONFIG_FILE "desktop.conf" #define HD_DESKTOP_CONFIG_USER_PATH ".osso/hildon-desktop/" +#define HD_DESKTOP_PING_TIMEOUT_MESSAGE_STRING _( "qgn_nc_apkil_notresponding" ) +#define HD_DESKTOP_PING_TIMEOUT_RESPONSE_STRING _( "qgn_ib_apkil_responded" ) +#define HD_DESKTOP_PING_TIMEOUT_KILL_FAILURE_STRING _( "" ) + +#define HD_DESKTOP_PING_TIMEOUT_BUTTON_OK_STRING _( "qgn_bd_apkil_ok" ) +#define HD_DESKTOP_PING_TIMEOUT_BUTTON_CANCEL_STRING _( "qgn_bd_apkil_cancel" ) + typedef struct { GtkWidget *parent; @@ -113,8 +120,99 @@ void hd_desktop_launch_banner_close (GtkWidget *parent, HDDesktopBannerInfo *info); +static void +hd_desktop_ping_timeout_dialog_response (GtkDialog *note, gint ret, gpointer data) +{ + HDWMWindow *win = (HDWMWindow *)data; + HDWMApplication *app = hd_wm_window_get_application (win); + + gtk_widget_destroy (GTK_WIDGET(note)); + hd_wm_application_set_ping_timeout_note (app, NULL); + + if (ret == GTK_RESPONSE_OK) + { + /* Kill the app */ + if (!hd_wm_window_attempt_signal_kill (win, SIGKILL, FALSE)) + g_debug ("hd_wm_ping_timeout:failed to kill application '%s'.", hd_wm_window_get_name (win)); + } +} + +static void +hd_desktop_application_frozen (HDWM *hdwm, HDWMWindow *win, gpointer data) +{ + GtkWidget *note; + + HDWMApplication *app = hd_wm_window_get_application (win); + + gchar *timeout_message = + g_strdup_printf (HD_DESKTOP_PING_TIMEOUT_MESSAGE_STRING, hd_wm_window_get_name (win)); + + /* FIXME: Do we need to check if the note already exists? */ + note = GTK_WIDGET (hd_wm_application_get_ping_timeout_note (app)); + + if (note && GTK_IS_WIDGET (note)) + { + g_debug ("hd_wm_ping_timeout: the note already exists."); + goto cleanup_and_exit; + } + + note = hildon_note_new_confirmation (NULL, timeout_message); + + hd_wm_application_set_ping_timeout_note (app, G_OBJECT (note)); + + hildon_note_set_button_texts (HILDON_NOTE (note), + HD_DESKTOP_PING_TIMEOUT_BUTTON_OK_STRING, + HD_DESKTOP_PING_TIMEOUT_BUTTON_CANCEL_STRING); + + g_signal_connect (G_OBJECT (note), + "response", + G_CALLBACK (hd_desktop_ping_timeout_dialog_response), + win); + + gtk_widget_show_all (note); + +cleanup_and_exit: + + g_free (timeout_message); +} + + +static void +hd_desktop_application_frozen_cancel (HDWM *hdwm, HDWMWindow *win, gpointer data) +{ + HDWMApplication *app = hd_wm_window_get_application (win); + + GObject *note = hd_wm_application_get_ping_timeout_note (app); + + gchar *response_message = + g_strdup_printf (HD_DESKTOP_PING_TIMEOUT_RESPONSE_STRING, hd_wm_window_get_name (win)); + + if (note && GTK_IS_WIDGET (note)) + gtk_dialog_response (GTK_DIALOG (note), GTK_RESPONSE_CANCEL); + + /* Show the infoprint */ + hildon_banner_show_information (NULL, NULL, response_message); + + g_free (response_message); +} + +static void +hd_desktop_application_died_dialog (HDWM *hdwm, gpointer text, gpointer data) +{ + gchar *_text = (gchar *) text; + GtkWidget *dialog; + + dialog = hildon_note_new_information (NULL, text); + + gtk_widget_show_all(dialog); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + + g_free (_text); +} + static void -hd_desktop_launch_banner_show (HDWM *hdwm, HDWMApplication *app, gpointer data) +hd_desktop_launch_banner_show (HDWM *hdwm, gpointer app, gpointer data) { HDDesktopBannerInfo *info; guint interval; @@ -127,17 +225,23 @@ info = g_new0 (HDDesktopBannerInfo, 1); info->hdwm = hdwm; - info->app = app; + info->app = (HD_WM_IS_APPLICATION (app)) ? app : NULL; gettimeofday (&info->launch_time, NULL ); - lapp_name = hd_wm_application_get_localized_name (app); + lapp_name = (HD_WM_IS_APPLICATION (app)) ? + hd_wm_application_get_localized_name (app) : app; - info->msg = - g_strdup_printf (_(hd_wm_application_is_hibernating (app) ? - HDWM_APPLICATION_LAUNCH_BANNER_MSG_RESUMING : - HDWM_APPLICATION_LAUNCH_BANNER_MSG_LOADING), - lapp_name ? _(lapp_name) : "" ); + if (HD_WM_IS_APPLICATION (app)) + info->msg = + g_strdup_printf (_(hd_wm_application_is_hibernating (app) ? + HDWM_APPLICATION_LAUNCH_BANNER_MSG_RESUMING : + HDWM_APPLICATION_LAUNCH_BANNER_MSG_LOADING), + lapp_name ? _(lapp_name) : "" ); + else + info->msg = + g_strdup_printf (HDWM_APPLICATION_LAUNCH_BANNER_MSG_LOADING, + lapp_name ? _(lapp_name) : "" ); info->banner = GTK_WIDGET (hildon_banner_show_animation (NULL, NULL, info->msg)); @@ -1460,6 +1564,21 @@ G_CALLBACK (hd_desktop_launch_banner_show), NULL); + g_signal_connect (hdwm, + "application-died", + G_CALLBACK (hd_desktop_application_died_dialog), + NULL); + + g_signal_connect (hdwm, + "application-frozen", + G_CALLBACK (hd_desktop_application_frozen), + NULL); + + g_signal_connect (hdwm, + "application-frozen-cancel", + G_CALLBACK (hd_desktop_application_frozen_cancel), + NULL); + desktop->priv->system_conf_monitor = NULL; desktop->priv->user_conf_monitor = NULL;
- Previous message: [maemo-commits] r12434 - projects/haf/tags/libhildonmime
- Next message: [maemo-commits] r12436 - projects/haf/trunk/hildon-desktop
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]