aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-activity-handler.c
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2001-07-03 01:06:08 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2001-07-03 01:06:08 +0800
commit7657ec4a52ccbe53d039a70f74ec687d9fa662a7 (patch)
treeb5a759a9af265756eab9a762c718a2e6d60014b6 /shell/e-activity-handler.c
parentb37c291e33769b6019e512c212fdea50d4a2529f (diff)
downloadgsoc2013-evolution-7657ec4a52ccbe53d039a70f74ec687d9fa662a7.tar.gz
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.c60
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 {