diff -Nru --exclude INSTALL --exclude Makefile.in --exclude aclocal.m4 --exclude m4 --exclude configure indicator-applet-0.3.6/configure.ac indicator-applet-0.3.7/configure.ac --- indicator-applet-0.3.6/configure.ac 2010-04-01 22:35:22.000000000 +0200 +++ indicator-applet-0.3.7/configure.ac 2010-05-04 19:22:56.000000000 +0200 @@ -4,7 +4,7 @@ AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-applet, 0.3.6) +AM_INIT_AUTOMAKE(indicator-applet, 0.3.7) AM_MAINTAINER_MODE m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES]) diff -Nru --exclude INSTALL --exclude Makefile.in --exclude aclocal.m4 --exclude m4 --exclude configure indicator-applet-0.3.6/debian/changelog indicator-applet-0.3.7/debian/changelog --- indicator-applet-0.3.6/debian/changelog 2010-05-05 12:00:29.000000000 +0200 +++ indicator-applet-0.3.7/debian/changelog 2010-05-05 12:00:29.000000000 +0200 @@ -1,3 +1,12 @@ +indicator-applet (0.3.7-0ubuntu1) lucid-proposed; urgency=low + + * New upstream release. + * Fix shortcuts over remote connections (LP: #568401) + * Compiler cleanups + * Support for vertical panels (LP: #553918) + + -- Ted Gould Tue, 04 May 2010 19:44:02 +0200 + indicator-applet (0.3.6-0ubuntu2) lucid; urgency=low * Backport change to fix keyboard grabbing issues (lp: #553918) diff -Nru --exclude INSTALL --exclude Makefile.in --exclude aclocal.m4 --exclude m4 --exclude configure indicator-applet-0.3.6/src/applet-main.c indicator-applet-0.3.7/src/applet-main.c --- indicator-applet-0.3.6/src/applet-main.c 2010-05-05 12:00:29.000000000 +0200 +++ indicator-applet-0.3.7/src/applet-main.c 2010-04-30 15:55:13.000000000 +0200 @@ -26,7 +26,7 @@ #include #include "libindicator/indicator-object.h" - +#include "tomboykeybinder.h" static gchar * indicator_order[] = { "libapplication.so", @@ -38,6 +38,9 @@ NULL }; +static GtkPackDirection packdirection; +static PanelAppletOrient orient; + #define MENU_DATA_INDICATOR_OBJECT "indicator-object" #define MENU_DATA_INDICATOR_ENTRY "indicator-entry" @@ -45,7 +48,6 @@ static gboolean applet_fill_cb (PanelApplet * applet, const gchar * iid, gpointer data); - static void cw_panel_background_changed (PanelApplet *applet, PanelAppletBackgroundType type, GdkColor *colour, @@ -178,23 +180,37 @@ } static void -entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menu) +entry_added (IndicatorObject * io, IndicatorObjectEntry * entry, GtkWidget * menubar) { g_debug("Signal: Entry Added"); GtkWidget * menuitem = gtk_menu_item_new(); - GtkWidget * hbox = gtk_hbox_new(FALSE, 3); + GtkWidget * box = (packdirection == GTK_PACK_DIRECTION_LTR) ? + gtk_hbox_new(FALSE, 3) : gtk_vbox_new(FALSE, 3); - g_object_set_data (G_OBJECT (menuitem), "indicator", io); + g_object_set_data (G_OBJECT (menuitem), "indicator", io); + g_object_set_data (G_OBJECT (menuitem), "box", box); if (entry->image != NULL) { - gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(entry->image), FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(entry->image), FALSE, FALSE, 0); } if (entry->label != NULL) { - gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(entry->label), FALSE, FALSE, 0); + switch(packdirection) { + case GTK_PACK_DIRECTION_LTR: + gtk_label_set_angle(GTK_LABEL(entry->label), 0.0); + break; + case GTK_PACK_DIRECTION_TTB: + gtk_label_set_angle(GTK_LABEL(entry->label), + (orient == PANEL_APPLET_ORIENT_LEFT) ? + 270.0 : 90.0); + break; + default: + break; + } + gtk_box_pack_start(GTK_BOX(box), GTK_WIDGET(entry->label), FALSE, FALSE, 0); } - gtk_container_add(GTK_CONTAINER(menuitem), hbox); - gtk_widget_show(hbox); + gtk_container_add(GTK_CONTAINER(menuitem), box); + gtk_widget_show(box); if (entry->menu != NULL) { gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), GTK_WIDGET(entry->menu)); @@ -206,9 +222,9 @@ position.menupos = 0; position.found = FALSE; - gtk_container_foreach(GTK_CONTAINER(menu), place_in_menu, &position); + gtk_container_foreach(GTK_CONTAINER(menubar), place_in_menu, &position); - gtk_menu_shell_insert(GTK_MENU_SHELL(menu), menuitem, position.menupos); + gtk_menu_shell_insert(GTK_MENU_SHELL(menubar), menuitem, position.menupos); gtk_widget_show(menuitem); g_object_set_data(G_OBJECT(menuitem), MENU_DATA_INDICATOR_ENTRY, entry); @@ -231,7 +247,8 @@ } static void -entry_removed (IndicatorObject * io, IndicatorObjectEntry * entry, gpointer user_data) +entry_removed (IndicatorObject * io G_GNUC_UNUSED, IndicatorObjectEntry * entry, + gpointer user_data) { g_debug("Signal: Entry Removed"); @@ -260,15 +277,16 @@ /* Gets called when an entry for an object was moved. */ static void -entry_moved (IndicatorObject * io, IndicatorObjectEntry * entry, gint old, gint new, gpointer user_data) +entry_moved (IndicatorObject * io, IndicatorObjectEntry * entry, + gint old G_GNUC_UNUSED, gint new G_GNUC_UNUSED, gpointer user_data) { - GtkWidget * menu = GTK_WIDGET(user_data); + GtkWidget * menubar = GTK_WIDGET(user_data); gpointer array[2]; array[0] = entry; array[1] = NULL; - gtk_container_foreach(GTK_CONTAINER(user_data), entry_moved_find_cb, array); + gtk_container_foreach(GTK_CONTAINER(menubar), entry_moved_find_cb, array); if (array[1] == NULL) { g_warning("Moving an entry that isn't in our menus."); return; @@ -276,7 +294,7 @@ GtkWidget * mi = GTK_WIDGET(array[1]); g_object_ref(G_OBJECT(mi)); - gtk_container_remove(GTK_CONTAINER(user_data), mi); + gtk_container_remove(GTK_CONTAINER(menubar), mi); incoming_position_t position; position.objposition = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(io), IO_DATA_ORDER_NUMBER)); @@ -284,16 +302,16 @@ position.menupos = 0; position.found = FALSE; - gtk_container_foreach(GTK_CONTAINER(menu), place_in_menu, &position); + gtk_container_foreach(GTK_CONTAINER(menubar), place_in_menu, &position); - gtk_menu_shell_insert(GTK_MENU_SHELL(menu), mi, position.menupos); + gtk_menu_shell_insert(GTK_MENU_SHELL(menubar), mi, position.menupos); g_object_unref(G_OBJECT(mi)); return; } static gboolean -load_module (const gchar * name, GtkWidget * menu) +load_module (const gchar * name, GtkWidget * menubar) { g_debug("Looking at Module: %s", name); g_return_val_if_fail(name != NULL, FALSE); @@ -312,10 +330,10 @@ /* Attach the 'name' to the object */ g_object_set_data(G_OBJECT(io), IO_DATA_ORDER_NUMBER, GINT_TO_POINTER(name2order(name))); - /* Connect to it's signals */ - g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED, G_CALLBACK(entry_added), menu); - g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED, G_CALLBACK(entry_removed), menu); - g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED, G_CALLBACK(entry_moved), menu); + /* Connect to its signals */ + g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_ADDED, G_CALLBACK(entry_added), menubar); + g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_REMOVED, G_CALLBACK(entry_removed), menubar); + g_signal_connect(G_OBJECT(io), INDICATOR_OBJECT_SIGNAL_ENTRY_MOVED, G_CALLBACK(entry_moved), menubar); /* Work on the entries */ GList * entries = indicator_object_get_entries(io); @@ -323,7 +341,7 @@ for (entry = entries; entry != NULL; entry = g_list_next(entry)) { IndicatorObjectEntry * entrydata = (IndicatorObjectEntry *)entry->data; - entry_added(io, entrydata, menu); + entry_added(io, entrydata, menubar); } g_list_free(entries); @@ -332,7 +350,7 @@ } static void -hotkey_filter (char * keystring, gpointer data) +hotkey_filter (char * keystring G_GNUC_UNUSED, gpointer data) { g_return_if_fail(GTK_IS_MENU_SHELL(data)); @@ -357,7 +375,7 @@ static gboolean menubar_press (GtkWidget * widget, GdkEventButton *event, - gpointer data) + gpointer data G_GNUC_UNUSED) { if (event->button != 1) { g_signal_stop_emission_by_name(widget, "button-press-event"); @@ -367,22 +385,23 @@ } static gboolean -menubar_scroll (GtkWidget *widget, +menubar_scroll (GtkWidget *widget G_GNUC_UNUSED, GdkEventScroll *event, - gpointer data) + gpointer data G_GNUC_UNUSED) { GtkWidget *menuitem; - GtkWidget *parent; menuitem = gtk_get_event_widget ((GdkEvent *)event); IndicatorObject *io = g_object_get_data (G_OBJECT (menuitem), "indicator"); g_signal_emit_by_name (io, "scroll", 1, event->direction); + + return FALSE; } static gboolean menubar_on_expose (GtkWidget * widget, - GdkEventExpose *event, + GdkEventExpose *event G_GNUC_UNUSED, GtkWidget * menubar) { if (GTK_WIDGET_HAS_FOCUS(menubar)) @@ -393,9 +412,9 @@ } static void -about_cb (BonoboUIComponent *ui_container, - gpointer data, - const gchar *cname) +about_cb (BonoboUIComponent *ui_container G_GNUC_UNUSED, + gpointer data G_GNUC_UNUSED, + const gchar *cname G_GNUC_UNUSED) { static const gchar *authors[] = { "Ted Gould ", @@ -442,20 +461,90 @@ return; } +static gboolean +swap_orient_cb (GtkWidget *item, gpointer data) +{ + GtkWidget *from = (GtkWidget *) data; + GtkWidget *to = (GtkWidget *) g_object_get_data(G_OBJECT(from), "to"); + g_object_ref(G_OBJECT(item)); + gtk_container_remove(GTK_CONTAINER(from), item); + if (GTK_IS_LABEL(item)) { + switch(packdirection) { + case GTK_PACK_DIRECTION_LTR: + gtk_label_set_angle(GTK_LABEL(item), 0.0); + break; + case GTK_PACK_DIRECTION_TTB: + gtk_label_set_angle(GTK_LABEL(item), + (orient == PANEL_APPLET_ORIENT_LEFT) ? + 270.0 : 90.0); + break; + default: + break; + } + } + gtk_box_pack_start(GTK_BOX(to), item, FALSE, FALSE, 0); + return TRUE; +} + +static gboolean +reorient_box_cb (GtkWidget *menuitem, gpointer data) +{ + GtkWidget *from = g_object_get_data(G_OBJECT(menuitem), "box"); + GtkWidget *to = (packdirection == GTK_PACK_DIRECTION_LTR) ? + gtk_hbox_new(FALSE, 0) : gtk_vbox_new(FALSE, 0); + g_object_set_data(G_OBJECT(from), "to", to); + gtk_container_foreach(GTK_CONTAINER(from), (GtkCallback)swap_orient_cb, + from); + gtk_container_remove(GTK_CONTAINER(menuitem), from); + gtk_container_add(GTK_CONTAINER(menuitem), to); + g_object_set_data(G_OBJECT(menuitem), "box", to); + gtk_widget_show_all(menuitem); + return TRUE; +} + +static gboolean +panelapplet_reorient_cb (GtkWidget *applet, PanelAppletOrient neworient, + gpointer data) +{ + GtkWidget *menubar = (GtkWidget *)data; + if ((((neworient == PANEL_APPLET_ORIENT_UP) || + (neworient == PANEL_APPLET_ORIENT_DOWN)) && + ((orient == PANEL_APPLET_ORIENT_LEFT) || + (orient == PANEL_APPLET_ORIENT_RIGHT))) || + (((neworient == PANEL_APPLET_ORIENT_LEFT) || + (neworient == PANEL_APPLET_ORIENT_RIGHT)) && + ((orient == PANEL_APPLET_ORIENT_UP) || + (orient == PANEL_APPLET_ORIENT_DOWN)))) { + packdirection = (packdirection == GTK_PACK_DIRECTION_LTR) ? + GTK_PACK_DIRECTION_TTB : GTK_PACK_DIRECTION_LTR; + gtk_menu_bar_set_pack_direction(GTK_MENU_BAR(menubar), + packdirection); + orient = neworient; + gtk_container_foreach(GTK_CONTAINER(menubar), + (GtkCallback)reorient_box_cb, NULL); + } + orient = neworient; + return FALSE; +} + #ifdef N_ #undef N_ #endif #define N_(x) x static void -log_to_file_cb (GObject * source_obj, GAsyncResult * result, gpointer user_data) +log_to_file_cb (GObject * source_obj G_GNUC_UNUSED, + GAsyncResult * result G_GNUC_UNUSED, gpointer user_data) { g_free(user_data); return; } static void -log_to_file (const gchar * domain, GLogLevelFlags level, const gchar * message, gpointer data) +log_to_file (const gchar * domain G_GNUC_UNUSED, + GLogLevelFlags level G_GNUC_UNUSED, + const gchar * message, + gpointer data G_GNUC_UNUSED) { if (log_file == NULL) { GError * error = NULL; @@ -500,7 +589,8 @@ } static gboolean -applet_fill_cb (PanelApplet * applet, const gchar * iid, gpointer data) +applet_fill_cb (PanelApplet * applet, const gchar * iid G_GNUC_UNUSED, + gpointer data G_GNUC_UNUSED) { static const BonoboUIVerb menu_verbs[] = { BONOBO_UI_VERB ("IndicatorAppletAbout", about_cb), @@ -511,18 +601,10 @@ "" ""; + static gboolean first_time = FALSE; GtkWidget *menubar; - gint i; gint indicators_loaded = 0; - /* check if we are running stracciatella session */ - if (g_strcmp0(g_getenv("GDMSESSION"), "gnome-stracciatella") == 0) { - g_debug("Running stracciatella GNOME session, disabling myself"); - return TRUE; - } - - static gboolean first_time = FALSE; - #ifdef INDICATOR_APPLET_SESSION /* check if we are running stracciatella session */ if (g_strcmp0(g_getenv("GDMSESSION"), "gnome-stracciatella") == 0) { @@ -552,7 +634,8 @@ /* Set panel options */ gtk_container_set_border_width(GTK_CONTAINER (applet), 0); panel_applet_set_flags(applet, PANEL_APPLET_EXPAND_MINOR); - panel_applet_setup_menu(applet, menu_xml, menu_verbs, NULL); + menubar = gtk_menu_bar_new(); + panel_applet_setup_menu(applet, menu_xml, menu_verbs, menubar); #ifdef INDICATOR_APPLET atk_object_set_name (gtk_widget_get_accessible (GTK_WIDGET (applet)), "indicator-applet"); @@ -599,12 +682,19 @@ gtk_widget_set_name(GTK_WIDGET (applet), "fast-user-switch-applet"); /* Build menubar */ - menubar = gtk_menu_bar_new(); + orient = (panel_applet_get_orient(applet)); + packdirection = ((orient == PANEL_APPLET_ORIENT_UP) || + (orient == PANEL_APPLET_ORIENT_DOWN)) ? + GTK_PACK_DIRECTION_LTR : GTK_PACK_DIRECTION_TTB; + gtk_menu_bar_set_pack_direction(GTK_MENU_BAR(menubar), + packdirection); GTK_WIDGET_SET_FLAGS (menubar, GTK_WIDGET_FLAGS(menubar) | GTK_CAN_FOCUS); gtk_widget_set_name(GTK_WIDGET (menubar), "fast-user-switch-menubar"); g_signal_connect(menubar, "button-press-event", G_CALLBACK(menubar_press), NULL); g_signal_connect(menubar, "scroll-event", G_CALLBACK (menubar_scroll), NULL); g_signal_connect_after(menubar, "expose-event", G_CALLBACK(menubar_on_expose), menubar); + g_signal_connect(applet, "change-orient", + G_CALLBACK(panelapplet_reorient_cb), menubar); gtk_container_set_border_width(GTK_CONTAINER(menubar), 0); /* Add in filter func */ @@ -654,6 +744,7 @@ gtk_widget_show(GTK_WIDGET(applet)); return TRUE; + } static void diff -Nru --exclude INSTALL --exclude Makefile.in --exclude aclocal.m4 --exclude m4 --exclude configure indicator-applet-0.3.6/src/tomboykeybinder.c indicator-applet-0.3.7/src/tomboykeybinder.c --- indicator-applet-0.3.6/src/tomboykeybinder.c 2010-04-01 05:09:49.000000000 +0200 +++ indicator-applet-0.3.7/src/tomboykeybinder.c 2010-05-04 18:54:56.000000000 +0200 @@ -79,7 +79,7 @@ caps_lock_mask | scroll_lock_mask, num_lock_mask | caps_lock_mask | scroll_lock_mask, }; - int i; + guint i; for (i = 0; i < G_N_ELEMENTS (mod_masks); i++) { if (grab) { @@ -128,6 +128,8 @@ egg_keymap_resolve_virtual_modifiers (keymap, virtual_mods, &binding->modifiers); + if (binding->modifiers == 0) + return FALSE; TRACE (g_print ("Got modmask %d\n", binding->modifiers)); @@ -162,7 +164,8 @@ } static GdkFilterReturn -filter_func (GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data) +filter_func (GdkXEvent *gdk_xevent, GdkEvent *event G_GNUC_UNUSED, + gpointer data G_GNUC_UNUSED) { GdkFilterReturn return_val = GDK_FILTER_CONTINUE; XEvent *xevent = (XEvent *) gdk_xevent; @@ -213,7 +216,7 @@ } static void -keymap_changed (GdkKeymap *map) +keymap_changed (GdkKeymap *map G_GNUC_UNUSED) { GdkKeymap *keymap = gdk_keymap_get_default (); GSList *iter;