[maemo-commits] [maemo-commits] r11522 - in projects/haf/trunk/hildon-desktop: . libhildondesktop libhildonwm src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue May 8 18:43:17 EEST 2007
- Previous message: [maemo-commits] r11521 - in projects/haf/trunk/hildon-desktop: . libhildondesktop
- Next message: [maemo-commits] r11523 - projects/haf/trunk/dosfstools/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart
Date: 2007-05-08 18:43:16 +0300 (Tue, 08 May 2007)
New Revision: 11522
Modified:
projects/haf/trunk/hildon-desktop/ChangeLog
projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c
projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c
projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-watched-window.c
projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c
projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
Log:
* src/hd-switcher-menu.c:
- Fixed menu positioning.
- Implemented key navigation.
- Added separators to notifications.
* libhildondesktop/hildon-desktop-popup-menu.c:
- Implemented navigation through keys. Misses auto-scrolling.
- Small fixes
* libhildondesktop/hildon-desktop-popup-window.c:
- Propagate key-press-event to child widget of pane.
* libhildonwm/hd-wm-watched-window.c:
- Update state of fullscreen when a HDWMWatchedWindow is removed.
Fixes: NB#56174, NB#54820.
* libhildonwm/hd-wm.c:
- Renamed "show_menu" signal to "show-menu".
* ChangeLog updated.
Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-08 15:34:00 UTC (rev 11521)
+++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-08 15:43:16 UTC (rev 11522)
@@ -1,3 +1,20 @@
+2007-05-08 Moises Martinez <moises.martinez at nokia.com>
+
+ * src/hd-switcher-menu.c:
+ - Fixed menu positioning.
+ - Implemented key navigation.
+ - Added separators to notifications.
+ * libhildondesktop/hildon-desktop-popup-menu.c:
+ - Implemented navigation through keys. Misses auto-scrolling.
+ - Small fixes
+ * libhildondesktop/hildon-desktop-popup-window.c:
+ - Propagate key-press-event to child widget of pane.
+ * libhildonwm/hd-wm-watched-window.c:
+ - Update state of fullscreen when a HDWMWatchedWindow is removed.
+ Fixes: NB#56174, NB#54820.
+ * libhildonwm/hd-wm.c:
+ - Renamed "show_menu" signal to "show-menu".
+
2007-05-08 Johan Bilien <johan.bilien at nokia.com>
* libhildondesktop/hildon-desktop-home-item.c:
Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c 2007-05-08 15:34:00 UTC (rev 11521)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c 2007-05-08 15:43:16 UTC (rev 11522)
@@ -32,8 +32,8 @@
#include <gtk/gtkbutton.h>
#include <gtk/gtkwindow.h>
#include <gdk/gdk.h>
+#include <gdk/gdkkeysyms.h>
-
#define HILDON_DESKTOP_POPUP_MENU_GET_PRIVATE(object) \
(G_TYPE_INSTANCE_GET_PRIVATE ((object), HILDON_DESKTOP_TYPE_POPUP_MENU, HildonDesktopPopupMenuPrivate))
@@ -89,7 +89,7 @@
static gboolean hildon_desktop_popup_menu_motion_notify (GtkWidget *widget, GdkEventMotion *event);
static gboolean hildon_desktop_popup_menu_release_event (GtkWidget *widget, GdkEventButton *event);
-
+static gboolean hildon_desktop_popup_menu_key_press_event (GtkWidget *widget, GdkEventKey *event);
static void hildon_desktop_popup_menu_scroll_cb (GtkWidget *widget, HildonDesktopPopupMenu *menu);
static void
@@ -119,7 +119,8 @@
widget_class->motion_notify_event = hildon_desktop_popup_menu_motion_notify;
widget_class->button_release_event = hildon_desktop_popup_menu_release_event;
-
+ widget_class->key_press_event = hildon_desktop_popup_menu_key_press_event;
+
g_type_class_add_private (object_class, sizeof (HildonDesktopPopupMenuPrivate));
signals[SIGNAL_POPUP_RESIZE] =
@@ -284,7 +285,10 @@
h = GTK_WIDGET (l->data)->allocation.height;
if ((x >= 0) && (x <= w) && (y >= 0) && (y <= h))
+ {
gtk_item_select (GTK_ITEM (l->data));
+ menu->priv->selected_item = GTK_MENU_ITEM (l->data);
+ }
}
g_list_free (menu_items);
@@ -347,6 +351,77 @@
return TRUE;
}
+static gboolean
+hildon_desktop_popup_menu_key_press_event (GtkWidget *widget,
+ GdkEventKey *event)
+{
+ HildonDesktopPopupMenu *menu = HILDON_DESKTOP_POPUP_MENU (widget);
+ GList *menu_items = NULL, *l;
+
+ menu_items =
+ gtk_container_get_children (GTK_CONTAINER (menu->priv->box_items));
+
+ for (l = menu_items; l != NULL; l = g_list_next (l))
+ {
+ if (l->data == menu->priv->selected_item)
+ break;
+ }
+
+ g_debug ("key press event %p",l);
+
+ if (l == NULL)
+ return FALSE;
+
+ if (event->keyval == GDK_Up ||
+ event->keyval == GDK_KP_Up)
+ {
+ GList *item = l->prev;
+
+ while (item)
+ {
+ if (GTK_IS_MENU_ITEM (item->data) && !GTK_IS_SEPARATOR_MENU_ITEM (item->data))
+ {
+ gtk_item_deselect (GTK_ITEM (l->data));
+ gtk_item_select (GTK_ITEM (item->data));
+ menu->priv->selected_item = GTK_MENU_ITEM (item->data);
+ break;
+ }
+
+ item = g_list_previous (item);
+ }
+ return TRUE;
+ }
+ else
+ if (event->keyval == GDK_Down ||
+ event->keyval == GDK_KP_Down)
+ {
+ GList *item = l->next;
+
+ while (item)
+ {
+ if (GTK_IS_MENU_ITEM (item->data) && !GTK_IS_SEPARATOR_MENU_ITEM (item->data))
+ {
+ gtk_item_deselect (GTK_ITEM (l->data));
+ gtk_item_select (GTK_ITEM (item->data));
+ menu->priv->selected_item = GTK_MENU_ITEM (item->data);
+ break;
+ }
+
+ item = g_list_next (item);
+ }
+ return TRUE;
+ }
+ else
+ if (event->keyval == GDK_KP_Enter ||
+ event->keyval == GDK_ISO_Enter)
+ {
+ if (menu->priv->selected_item)
+ gtk_menu_item_activate (menu->priv->selected_item);
+ }
+
+ return FALSE;
+}
+
static void
hildon_desktop_popup_menu_show_controls (HildonDesktopPopupMenu *menu)
{
@@ -520,8 +595,9 @@
{
gtk_item_select (GTK_ITEM (item));
menu->priv->selected_item = item;
- break;
}
+ else
+ gtk_item_deselect (GTK_ITEM (item));
}
g_list_free (children);
Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c 2007-05-08 15:34:00 UTC (rev 11521)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c 2007-05-08 15:43:16 UTC (rev 11522)
@@ -122,6 +122,28 @@
popup->priv->attached_widget = NULL;
}
+static gboolean
+hildon_desktop_popup_window_key_press_event (GtkWidget *widget, GdkEventKey *event)
+{
+ if (GTK_BIN (widget)->child)
+ return gtk_widget_event (GTK_BIN (widget)->child,(GdkEvent *)event);
+
+ return
+ GTK_WIDGET_CLASS
+ (hildon_desktop_popup_window_parent_class)->key_press_event (widget, event);
+}
+
+static gboolean
+hildon_desktop_popup_window_key_press_event_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ HildonDesktopPopupWindow *popup)
+{
+ if (GTK_BIN (widget)->child)
+ return gtk_widget_event (GTK_BIN (widget)->child,(GdkEvent *)event);
+
+ return FALSE;
+}
+
static void
hildon_desktop_popup_window_class_init (HildonDesktopPopupWindowClass *popup_class)
{
@@ -136,7 +158,7 @@
widget_class->motion_notify_event = hildon_desktop_popup_window_motion_notify;
widget_class->leave_notify_event = hildon_desktop_popup_window_leave_notify;
widget_class->button_release_event = hildon_desktop_popup_window_button_release_event;
-
+ widget_class->key_press_event = hildon_desktop_popup_window_key_press_event;
widget_class->realize = hildon_desktop_popup_window_realize;
widget_class->unrealize = hildon_desktop_popup_window_unrealize;
@@ -247,6 +269,11 @@
G_CALLBACK (hildon_desktop_popup_window_composited_leave_notify),
(gpointer)popup);
+ g_signal_connect (popup->priv->extra_panes[i],
+ "key-press-event",
+ G_CALLBACK (hildon_desktop_popup_window_key_press_event_cb),
+ (gpointer)popup);
+
/*FIXME: NO FOCUS FOR ANY WINDOW!!!!!!!!!!!!!!!!!! */
}
Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-watched-window.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-watched-window.c 2007-05-08 15:34:00 UTC (rev 11521)
+++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm-watched-window.c 2007-05-08 15:43:16 UTC (rev 11522)
@@ -815,6 +815,8 @@
if(win->gdk_wrapper_win)
g_object_unref (win->gdk_wrapper_win);
+ g_signal_emit_by_name (hdwm, "fullscreen", hd_wm_fullscreen_mode ());
+
g_free(win);
}
Modified: projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c 2007-05-08 15:34:00 UTC (rev 11521)
+++ projects/haf/trunk/hildon-desktop/libhildonwm/hd-wm.c 2007-05-08 15:43:16 UTC (rev 11522)
@@ -766,14 +766,14 @@
if (!member || member[0] == '\0')
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- if (strcmp (HOME_LONG_PRESS, member) == 0 && !hd_wm_modal_windows_present())
+ if (g_str_equal (HOME_LONG_PRESS, member) && !hd_wm_modal_windows_present())
{
g_signal_emit_by_name (hdwm, "long-key-press");
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
- if (strcmp (HOME_PRESS, member) == 0 && !hd_wm_modal_windows_present())
+ if (g_str_equal (HOME_PRESS, member) && !hd_wm_modal_windows_present())
{
hd_wm_activate (HD_TN_ACTIVATE_MAIN_MENU);
@@ -976,7 +976,7 @@
G_TYPE_POINTER);
hdwm_signals[HDWM_SHOW_A_MENU_SIGNAL] =
- g_signal_new("show_menu",
+ g_signal_new("show-menu",
G_OBJECT_CLASS_TYPE(object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (HDWMClass,show_menu),
@@ -1124,6 +1124,8 @@
memset(hdwm->priv, 0, sizeof(HDWMPrivate));
+ hdwm->priv->init_dbus = TRUE;
+
/* Check for configurable lowmem values. */
hdwm->priv->lowmem_min_distance
@@ -2295,7 +2297,7 @@
return;
case HD_TN_ACTIVATE_MAIN_MENU:
g_debug ("activating main menu: signal");
- g_signal_emit_by_name (hdwm, "show_menu");
+ g_signal_emit_by_name (hdwm, "show-menu");
return;
case HD_TN_ACTIVATE_LAST_APP_WINDOW:
hdwm->priv->has_focus = FALSE;
Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c
===================================================================
--- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-05-08 15:34:00 UTC (rev 11521)
+++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-05-08 15:43:16 UTC (rev 11522)
@@ -30,6 +30,7 @@
#include "hn-app-pixbuf-anim-blinker.h"
#include <gdk/gdkx.h>
+#include <gdk/gdkkeysyms.h>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
@@ -93,6 +94,7 @@
GtkWidget *active_menu_item;
gboolean is_open;
+ gboolean fullscreen;
GtkIconTheme *icon_theme;
GtkWidget *icon;
@@ -119,6 +121,7 @@
static void hd_switcher_menu_changed_stack_cb (HDWM *hdwm, HDEntryInfo *info, HDSwitcherMenu *switcher);
static void hd_switcher_menu_show_menu_cb (HDWM *hdwm, HDSwitcherMenu *switcher);
static void hd_switcher_menu_long_press_cb (HDWM *hdwm, HDSwitcherMenu *switcher);
+static void hd_switcher_menu_fullscreen_cb (HDWM *hdwm, gboolean fullscreen, HDSwitcherMenu *switcher);
static void hd_switcher_menu_notification_added_cb (GtkTreeModel *tree_model,
GtkTreePath *path,
@@ -146,7 +149,8 @@
switcher->priv->active_menu_item = NULL;
- switcher->priv->is_open = FALSE;
+ switcher->priv->is_open =
+ switcher->priv->fullscreen = FALSE;
switcher->priv->last_iter_added = NULL;
@@ -215,6 +219,57 @@
return retval;
}
+static gboolean
+hd_switcher_menu_popup_window_keypress_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ HDSwitcherMenu *switcher)
+{
+ HildonDesktopPopupWindow *window =
+ HILDON_DESKTOP_POPUP_WINDOW (widget);
+
+ if (event->keyval == GDK_Left ||
+ event->keyval == GDK_KP_Left ||
+ event->keyval == GDK_Escape)
+ {
+ hildon_desktop_popup_window_popdown (window);
+
+ if (event->keyval == GDK_Escape)
+ {
+ /* pass focus to the last active application */
+ hd_wm_focus_active_window (switcher->hdwm);
+ }
+ else
+ {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON), FALSE);
+
+ GdkWindow *window = gtk_widget_get_parent_window (GTK_WIDGET (switcher));
+ gtk_widget_grab_focus (GTK_WIDGET (switcher));
+ hd_wm_activate_window (HD_TN_ACTIVATE_KEY_FOCUS,window);
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gboolean
+hd_switcher_menu_switcher_keypress_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ HDSwitcherMenu *switcher)
+{
+ if (event->keyval == GDK_Right ||
+ event->keyval == GDK_KP_Right)
+ {
+ gtk_toggle_button_set_active
+ (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON), TRUE);
+
+ g_signal_emit_by_name (SWITCHER_TOGGLE_BUTTON, "toggled");
+ }
+
+ return TRUE;
+}
+
static void
hd_switcher_menu_update_open (HildonDesktopPopupWindow *window, HDSwitcherMenu *switcher)
{
@@ -232,6 +287,9 @@
hd_switcher_menu_item_set_blinking (HD_SWITCHER_MENU_ITEM (l->data),FALSE);
}
}
+
+ gtk_toggle_button_set_active
+ (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON), FALSE);
}
static GObject *
@@ -298,6 +356,16 @@
gtk_widget_show (GTK_WIDGET (switcher->priv->menu_applications));
gtk_widget_show (GTK_WIDGET (switcher->priv->menu_notifications));
+ g_signal_connect (switcher->priv->popup_window,
+ "key-press-event",
+ G_CALLBACK (hd_switcher_menu_popup_window_keypress_cb),
+ (gpointer)switcher);
+
+ g_signal_connect (button,
+ "key-press-event",
+ G_CALLBACK (hd_switcher_menu_switcher_keypress_cb),
+ (gpointer)switcher);
+
g_signal_connect (switcher,
"style-set",
G_CALLBACK (hd_switcher_menu_style_set),
@@ -349,7 +417,7 @@
(gpointer)switcher);
g_signal_connect (switcher->hdwm,
- "show_menu",
+ "show-menu",
G_CALLBACK (hd_switcher_menu_show_menu_cb),
(gpointer)switcher);
@@ -358,6 +426,11 @@
G_CALLBACK (hd_switcher_menu_long_press_cb),
(gpointer)switcher);
+ g_signal_connect (switcher->hdwm,
+ "fullscreen",
+ G_CALLBACK (hd_switcher_menu_fullscreen_cb),
+ (gpointer)switcher);
+
g_signal_connect_after (switcher->nm,
"row-inserted",
G_CALLBACK (hd_switcher_menu_notification_added_cb),
@@ -382,6 +455,10 @@
hildon_desktop_popup_menu_add_item
(switcher->priv->menu_applications, GTK_MENU_ITEM (menu_item));
+ hildon_desktop_popup_menu_add_item
+ (switcher->priv->menu_applications,
+ GTK_MENU_ITEM (gtk_separator_menu_item_new ()));
+
return object;
}
@@ -525,53 +602,65 @@
menu_height = req.height;
main_height = gdk_screen_get_height (screen);
- if (FALSE)
+ switch (orientation)
{
- *x = 0;
- *y = MAX (0, (main_height - menu_height));
- }
- else
- {
- switch (orientation)
- {
- case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_LEFT:
+ case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_LEFT:
+ if (switcher->priv->fullscreen)
+ *x = 0;
+ else
*x = workarea.x;
- if (main_height - button->allocation.y < menu_height)
- *y = MAX (0, (main_height - menu_height));
- else
- *y = button->allocation.y;
- break;
+ if (main_height - button->allocation.y < menu_height)
+ *y = MAX (0, (main_height - menu_height));
+ else
+ *y = button->allocation.y;
+ break;
- case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_RIGHT:
+ case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_RIGHT:
+ if (switcher->priv->fullscreen)
+ *x = gdk_screen_get_width (screen) - req.width;
+ else
*x = workarea.x + workarea.width - req.width;
- if (main_height - button->allocation.y < menu_height)
- *y = MAX (0, (main_height - menu_height));
- else
- *y = button->allocation.y;
- break;
+ if (main_height - button->allocation.y < menu_height)
+ *y = MAX (0, (main_height - menu_height));
+ else
+ *y = button->allocation.y;
+ break;
- case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_TOP:
- *x = button->allocation.x;
- *y = workarea.y;
- break;
+ case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_TOP:
+ *x = button->allocation.x;
- case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_BOTTOM:
- *x = button->allocation.x;
- *y = workarea.y + workarea.height - req.height;
- break;
+ if (switcher->priv->fullscreen)
+ *y = req.height;
+ else
+ *y = workarea.y;
+ break;
- default:
- g_assert_not_reached ();
- }
+ case HILDON_DESKTOP_PANEL_WINDOW_ORIENTATION_BOTTOM:
+ *x = button->allocation.x;
+
+ if (switcher->priv->fullscreen)
+ *y = main_height - req.height;
+ else
+ *y = workarea.y + workarea.height - req.height;
+ break;
+
+ default:
+ g_assert_not_reached ();
}
}
-
static void
hd_switcher_menu_toggled_cb (GtkWidget *button, HDSwitcherMenu *switcher)
{
+ if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON)))
+ {
+ hildon_desktop_popup_window_popdown (switcher->priv->popup_window);
+ return;
+ }
+
+
hildon_desktop_popup_window_popup
(switcher->priv->popup_window,
hd_switcher_menu_position_func,
@@ -591,7 +680,7 @@
GTK_BIN (SWITCHER_TOGGLE_BUTTON)->child);
gtk_container_add (GTK_CONTAINER (SWITCHER_TOGGLE_BUTTON),
- GTK_WIDGET (switcher->priv->icon));
+ GTK_WIDGET (switcher->priv->icon));
g_object_unref (G_OBJECT (switcher->priv->icon));
}
@@ -658,9 +747,6 @@
HDEntryInfo *entry = child->data;
- g_debug ("Creating new app menu item %s",
- hd_entry_info_peek_title (entry));
-
menu_item = hd_switcher_menu_item_new_from_entry_info (entry, TRUE);
hildon_desktop_popup_menu_add_item
@@ -670,6 +756,7 @@
hildon_desktop_popup_menu_select_item
(switcher->priv->menu_applications, GTK_MENU_ITEM (menu_item));
+ switcher->priv->active_menu_item = menu_item;
}
/* append the separator for this app*/
@@ -784,19 +871,56 @@
HDEntryInfo *info,
HDSwitcherMenu *switcher)
{
+ GList *children = NULL, *l;
+ children =
+ hildon_desktop_popup_menu_get_children (switcher->priv->menu_applications);
+
+ for (l = children; l != NULL; l = g_list_next (l))
+ {
+ if (HD_IS_SWITCHER_MENU_ITEM (l->data))
+ {
+ HDEntryInfo *info =
+ hd_switcher_menu_item_get_entry_info (HD_SWITCHER_MENU_ITEM (l->data));
+
+ if (hd_entry_info_is_active (info))
+ {
+ hildon_desktop_popup_menu_select_item
+ (switcher->priv->menu_applications, GTK_MENU_ITEM (l->data));
+
+ switcher->priv->active_menu_item = GTK_WIDGET (l->data);
+ }
+ }
+ }
}
static void
hd_switcher_menu_show_menu_cb (HDWM *hdwm, HDSwitcherMenu *switcher)
{
+ gtk_toggle_button_set_active
+ (GTK_TOGGLE_BUTTON (SWITCHER_TOGGLE_BUTTON), TRUE);
+ g_signal_emit_by_name (SWITCHER_TOGGLE_BUTTON, "toggled");
}
static void
+hd_switcher_menu_fullscreen_cb (HDWM *hdwm, gboolean fullscreen, HDSwitcherMenu *switcher)
+{
+ switcher->priv->fullscreen = fullscreen;
+}
+
+static void
hd_switcher_menu_long_press_cb (HDWM *hdwm, HDSwitcherMenu *switcher)
{
-
+ g_debug ("Heeeeeeeereeee");
+ if (switcher->priv->is_open)
+ {
+ hildon_desktop_popup_menu_activate_item
+ (switcher->priv->menu_applications,
+ GTK_MENU_ITEM (switcher->priv->active_menu_item));
+ }
+ else
+ hd_wm_top_desktop ();
}
static void
@@ -838,7 +962,15 @@
hildon_desktop_popup_menu_add_item
(switcher->priv->menu_notifications, GTK_MENU_ITEM (menu_item));
+ hildon_desktop_popup_menu_select_item
+ (switcher->priv->menu_notifications, GTK_MENU_ITEM (menu_item));
+
hd_switcher_menu_replace_blinking_icon (switcher, icon);
+
+ hildon_desktop_popup_menu_add_item
+ (switcher->priv->menu_notifications,
+ GTK_MENU_ITEM (gtk_separator_menu_item_new ()));
+
switcher->priv->last_iter_added = NULL;
}
@@ -855,15 +987,22 @@
for (l = children; l != NULL; l = g_list_next (l))
{
- gint _id =
- hd_switcher_menu_item_get_notification_id (HD_SWITCHER_MENU_ITEM (l->data));
+ if (!GTK_IS_SEPARATOR_MENU_ITEM (l->data))
+ {
+ gint _id =
+ hd_switcher_menu_item_get_notification_id (HD_SWITCHER_MENU_ITEM (l->data));
- if (_id == id)
- {
- hildon_desktop_popup_menu_remove_item (switcher->priv->menu_notifications,
- GTK_MENU_ITEM (l->data));
- break;
- }
+ if (_id == id)
+ {
+ hildon_desktop_popup_menu_remove_item (switcher->priv->menu_notifications,
+ GTK_MENU_ITEM (l->data));
+
+ if (l->prev && GTK_IS_SEPARATOR_MENU_ITEM (l->prev->data))
+ hildon_desktop_popup_menu_remove_item (switcher->priv->menu_notifications,
+ GTK_MENU_ITEM (l->prev->data));
+ break;
+ }
+ }
}
g_list_free (children);
- Previous message: [maemo-commits] r11521 - in projects/haf/trunk/hildon-desktop: . libhildondesktop
- Next message: [maemo-commits] r11523 - projects/haf/trunk/dosfstools/debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
