[maemo-commits] [maemo-commits] r11945 - in projects/haf/trunk/hildon-desktop: . libhildondesktop src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue May 29 13:58:15 EEST 2007
- Previous message: [maemo-commits] r11944 - in projects/haf/branches/hildon-theme-layout-5: . rc
- Next message: [maemo-commits] r11946 - in projects/haf/trunk/gtk+: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: lucasr Date: 2007-05-29 13:58:13 +0300 (Tue, 29 May 2007) New Revision: 11945 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-menu.h projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c Log: 2007-05-29 Lucas Rocha <lucas.rocha at nokia.com> * src/hd-applications-menu.c: change the keyboard navigation behavior so that categories are activated when using up and down arrows. Focus is only grabed by applications pane on menu is popup. * libhildondesktop/hildon-desktop-popup-menu.[ch]: added method for deselecting menu items. Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-29 10:13:17 UTC (rev 11944) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-29 10:58:13 UTC (rev 11945) @@ -1,5 +1,13 @@ 2007-05-29 Lucas Rocha <lucas.rocha at nokia.com> + * src/hd-applications-menu.c: change the keyboard navigation behavior + so that categories are activated when using up and down arrows. Focus + is only grabed by applications pane on menu is popup. + * libhildondesktop/hildon-desktop-popup-menu.[ch]: added method for + deselecting menu items. + +2007-05-29 Lucas Rocha <lucas.rocha at nokia.com> + * src/hd-select-plugins-dialog.c: show vertical scrollbar when the list of plugins is longer than the space available. Fixes: NB#53976 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-29 10:13:17 UTC (rev 11944) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c 2007-05-29 10:58:13 UTC (rev 11945) @@ -831,6 +831,18 @@ g_list_free (children); } +void +hildon_desktop_popup_menu_deselect_item (HildonDesktopPopupMenu *menu, GtkMenuItem *item) +{ + g_return_if_fail (HILDON_DESKTOP_IS_POPUP_MENU (menu)); + + if (menu->priv->selected_item == item) + { + gtk_item_deselect (GTK_ITEM (item)); + menu->priv->selected_item = NULL; + } +} + void hildon_desktop_popup_menu_select_first_item (HildonDesktopPopupMenu *menu) { Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.h =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.h 2007-05-29 10:13:17 UTC (rev 11944) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.h 2007-05-29 10:58:13 UTC (rev 11945) @@ -72,6 +72,9 @@ void hildon_desktop_popup_menu_select_item (HildonDesktopPopupMenu *menu, GtkMenuItem *item); +void +hildon_desktop_popup_menu_deselect_item (HildonDesktopPopupMenu *menu, GtkMenuItem *item); + void hildon_desktop_popup_menu_select_first_item (HildonDesktopPopupMenu *menu); Modified: projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c 2007-05-29 10:13:17 UTC (rev 11944) +++ projects/haf/trunk/hildon-desktop/src/hd-applications-menu.c 2007-05-29 10:58:13 UTC (rev 11945) @@ -102,6 +102,7 @@ GnomeVFSMonitorHandle *home_dir_monitor; GnomeVFSMonitorHandle *desktop_dir_monitor; guint monitor_update_timeout; + gboolean focus_applications; }; static void hd_applications_menu_register_monitors (HDApplicationsMenu *button); @@ -186,6 +187,8 @@ priv->monitor_update_timeout = 0; + priv->focus_applications = TRUE; + priv->popup_window = NULL; gtk_container_add (GTK_CONTAINER (button), priv->button); @@ -228,6 +231,8 @@ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button->priv->button), FALSE); + + button->priv->focus_applications = TRUE; } static gboolean @@ -243,11 +248,17 @@ { if (hd_applications_menu_has_focus (button->priv->menu_applications)) { - GtkWidget *selected_item = - (GtkWidget *) hildon_desktop_popup_menu_get_selected_item (button->priv->menu_categories); + GtkMenuItem *selected_item = + hildon_desktop_popup_menu_get_selected_item (button->priv->menu_applications); - gtk_widget_grab_focus (selected_item); + hildon_desktop_popup_menu_deselect_item (button->priv->menu_applications, + selected_item); + + selected_item = + hildon_desktop_popup_menu_get_selected_item (button->priv->menu_categories); + gtk_widget_grab_focus (GTK_WIDGET (selected_item)); + return TRUE; } @@ -268,26 +279,50 @@ return TRUE; } - else - if (event->keyval == GDK_Right || - event->keyval == GDK_KP_Right) + else if (event->keyval == GDK_Right || + event->keyval == GDK_KP_Right) { if (hd_applications_menu_has_focus (button->priv->menu_categories)) { - GtkWidget *selected_item = - (GtkWidget *) hildon_desktop_popup_menu_get_selected_item (button->priv->menu_applications); + GtkMenuItem *selected_item; - gtk_widget_grab_focus (selected_item); + hildon_desktop_popup_menu_select_first_item (button->priv->menu_applications); + selected_item = + hildon_desktop_popup_menu_get_selected_item (button->priv->menu_applications); + + if (GTK_WIDGET_IS_SENSITIVE (selected_item)) + gtk_widget_grab_focus (GTK_WIDGET (selected_item)); + else + hildon_desktop_popup_menu_deselect_item (button->priv->menu_applications, + selected_item); + return TRUE; } } else { if (hd_applications_menu_has_focus (button->priv->menu_categories)) - return gtk_widget_event (GTK_WIDGET (button->priv->menu_categories), (GdkEvent *) event); + { + gtk_widget_event (GTK_WIDGET (button->priv->menu_categories), (GdkEvent *) event); + + if (event->keyval == GDK_Up || + event->keyval == GDK_KP_Up || + event->keyval == GDK_Down || + event->keyval == GDK_KP_Down) + { + GtkMenuItem *selected_item; + + selected_item = + hildon_desktop_popup_menu_get_selected_item (button->priv->menu_categories); + + gtk_menu_item_activate (selected_item); + } + } else if (hd_applications_menu_has_focus (button->priv->menu_applications)) + { return gtk_widget_event (GTK_WIDGET (button->priv->menu_applications), (GdkEvent *) event); + } } return FALSE; @@ -324,16 +359,18 @@ (button->priv->menu_applications, child); } - hildon_desktop_popup_menu_select_first_item (button->priv->menu_applications); - - if (GTK_WIDGET_IS_SENSITIVE (sub_items->data)) + if (button->priv->focus_applications && + GTK_WIDGET_IS_SENSITIVE (sub_items->data)) { + hildon_desktop_popup_menu_select_first_item (button->priv->menu_applications); gtk_widget_grab_focus (GTK_WIDGET (sub_items->data)); } else { gtk_widget_grab_focus (GTK_WIDGET (item)); } + + button->priv->focus_applications = FALSE; } static void @@ -929,7 +966,7 @@ GdkWindow *w = gtk_widget_get_parent_window (GTK_WIDGET (button)); - + hd_wm_activate_window (HD_TN_ACTIVATE_KEY_FOCUS, w); return TRUE;
- Previous message: [maemo-commits] r11944 - in projects/haf/branches/hildon-theme-layout-5: . rc
- Next message: [maemo-commits] r11946 - in projects/haf/trunk/gtk+: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]