diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2001-07-03 01:06:08 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2001-07-03 01:06:08 +0800 |
commit | 7657ec4a52ccbe53d039a70f74ec687d9fa662a7 (patch) | |
tree | b5a759a9af265756eab9a762c718a2e6d60014b6 /shell/e-activity-handler.c | |
parent | b37c291e33769b6019e512c212fdea50d4a2529f (diff) | |
download | gsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.tar gsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.tar.gz gsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.tar.bz2 gsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.tar.lz gsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.tar.xz gsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.tar.zst gsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.zip |
Don't assert that there is a handler, so we don't crash if user clicks on
* e-storage-set-view.c (popup_folder_menu): Don't assert that
there is a handler, so we don't crash if user clicks on a folder
whose type we cannot handle for some reason [such as an
uninstalled component].
* evolution-test-component.c (activity_client_cancel_callback):
New callback for the "cancel" signal on the
EvolutionActivityClient object.
(activity_client_show_details_callback): New callback for the
"show_details" signal.
(timeout_callback_1): Connect these two signal handlers.
* e-activity-handler.c (task_widget_button_press_event_callback):
Ahem, right-click is button 3, not button 2.
(show_cancellation_popup): Actually pop up the menu.
(get_corba_null_value): New helper function to create a CORBA_any
null value.
(report_task_event): New helper function to report events to the
listener.
(task_widget_cancel_callback): Use it. Report "Cancel" instead of
"Cancelled".
(task_widget_show_details_callback): New, callback for the "Show
Details" right-click menu item.
* evolution-activity-client.c: Updated to dispatch the "Cancel"
and "ShowDetails" events as "cancel" and "show_details" signals.
(class_init): Install the signals.
(listener_callback): Updated to update the signals corresponding
to the "ShowDetails" and "Cancel" events.
* Evolution-Activity.idl: Changed the docs about the events sent
to the Bonobo::Listener. We now only have "ShowDetails" and
"Cancelled".
* evolution-test-component.c (timeout_callback_1): Make the
activity cancellable so we can test the right-click cancel menu
too.
* main.c (idle_cb): Actually exit if we cannot reach to the shell.
svn path=/trunk/; revision=10684
Diffstat (limited to 'shell/e-activity-handler.c')
-rw-r--r-- | shell/e-activity-handler.c | 60 |
1 files changed, 44 insertions, 16 deletions
diff --git a/shell/e-activity-handler.c b/shell/e-activity-handler.c index a7d42a361b..89ff551f4f 100644 --- a/shell/e-activity-handler.c +++ b/shell/e-activity-handler.c @@ -31,6 +31,7 @@ #include <gdk-pixbuf/gdk-pixbuf.h> #include <libgnome/gnome-i18n.h> +#include <libgnomeui/gnome-popup-menu.h> #include <gal/util/e-util.h> #include <gal/widgets/e-popup-menu.h> @@ -136,6 +137,34 @@ lookup_activity (GList *list, return NULL; } +static const CORBA_any * +get_corba_null_value (void) +{ + static CORBA_any *null_value = NULL; + + if (null_value == NULL) { + null_value = CORBA_any__alloc (); + null_value->_type = TC_null; + } + + return null_value; +} + +static void +report_task_event (ActivityInfo *activity_info, + const char *event_name) +{ + CORBA_Environment ev; + + CORBA_exception_init (&ev); + + Bonobo_Listener_event (activity_info->event_listener, event_name, get_corba_null_value (), &ev); + if (ev._major != CORBA_NO_EXCEPTION) + g_warning ("EActivityHandler: Cannot event `%s' -- %s", event_name, ev._repo_id); + + CORBA_exception_free (&ev); +} + /* ETaskWidget actions. */ @@ -144,24 +173,19 @@ task_widget_cancel_callback (GtkWidget *widget, void *data) { ActivityInfo *activity_info; - CORBA_Environment ev; - CORBA_any *null_value; - - CORBA_exception_init (&ev); activity_info = (ActivityInfo *) data; + report_task_event (activity_info, "Cancel"); +} - null_value = CORBA_any__alloc (); - null_value->_type = TC_null; - - Bonobo_Listener_event (activity_info->event_listener, "Cancelled", null_value, &ev); - if (ev._major != CORBA_NO_EXCEPTION) - g_warning ("EActivityHandler: Cannot report `Cancelled' event -- %s", - ev._repo_id); - - CORBA_free (null_value); +static void +task_widget_show_details_callback (GtkWidget *widget, + void *data) +{ + ActivityInfo *activity_info; - CORBA_exception_free (&ev); + activity_info = (ActivityInfo *) data; + report_task_event (activity_info, "ShowDetails"); } static void @@ -171,11 +195,15 @@ show_cancellation_popup (ActivityInfo *activity_info, { GtkMenu *popup; EPopupMenu items[] = { - { N_("Cancel"), NULL, task_widget_cancel_callback, NULL, 0 }, + { N_("Show Details"), NULL, task_widget_show_details_callback, NULL, 0 }, + { "", NULL, NULL, NULL, 0 }, + { N_("Cancel Operation"), NULL, task_widget_cancel_callback, NULL, 0 }, { NULL } }; + /* FIXME: We should gray out things properly here. */ popup = e_popup_menu_create (items, 0, 0, activity_info); + gnome_popup_menu_do_popup (GTK_WIDGET (popup), NULL, NULL, button_event, activity_info); } static int @@ -189,7 +217,7 @@ task_widget_button_press_event_callback (GtkWidget *widget, activity_info = (ActivityInfo *) data; - if (button_event->button == 2) { + if (button_event->button == 3) { if (! activity_info->cancellable) { return FALSE; } else { |