[maemo-commits] [maemo-commits] r13990 - in projects/haf/trunk/hildon-desktop: . src
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Sep 21 15:34:29 EEST 2007
- Previous message: [maemo-commits] r13989 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r13991 - projects/haf/trunk/hildon-fm/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: lucasr Date: 2007-09-21 15:34:27 +0300 (Fri, 21 Sep 2007) New Revision: 13990 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c Log: 2007-09-21 Lucas Rocha <lucas.rocha at nokia.com> * src/hd-switcher-menu.c (hd_switcher_menu_create_applications_menu, hd_switcher_menu_constructor): refactor applications pane to use optimized method for replacing all items in popup menu. Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-09-21 11:51:28 UTC (rev 13989) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-09-21 12:34:27 UTC (rev 13990) @@ -1,3 +1,9 @@ +2007-09-21 Lucas Rocha <lucas.rocha at nokia.com> + + * src/hd-switcher-menu.c (hd_switcher_menu_create_applications_menu, + hd_switcher_menu_constructor): refactor applications pane to use + optimized method for replacing all items in popup menu. + 2007-09-21 Johan Bilien <johan.bilien at nokia.com> * configure.ac: 0.0.37 Modified: projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c =================================================================== --- projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-09-21 11:51:28 UTC (rev 13989) +++ projects/haf/trunk/hildon-desktop/src/hd-switcher-menu.c 2007-09-21 12:34:27 UTC (rev 13990) @@ -153,6 +153,8 @@ GtkImage *image_button; + GtkWidget *home_item; + GtkWidget *active_menu_item; GtkWidget *clear_events_menu_item; @@ -200,6 +202,7 @@ static void hd_switcher_menu_create_clear_notifications_button (HDSwitcherMenu *switcher); +static void hd_switcher_menu_create_applications_menu (HDSwitcherMenu *switcher, HDWM *hdwm); static void hd_switcher_menu_refresh_application_items (HDSwitcherMenu *switcher); static void hd_switcher_menu_refresh_notification_items (HDSwitcherMenu *switcher); @@ -1128,21 +1131,20 @@ gtk_widget_pop_composite_child (); - GtkWidget *menu_item = + switcher->priv->home_item = hd_switcher_menu_item_new_from_entry_info (hd_wm_get_home_info (hdwm), FALSE); - - gtk_widget_set_name (GTK_WIDGET (menu_item), + + gtk_widget_set_name (GTK_WIDGET (switcher->priv->home_item), HD_SWITCHER_MENU_APP_MENU_ITEM_NAME); - hildon_desktop_popup_menu_add_item - (switcher->priv->menu_applications, GTK_MENU_ITEM (menu_item)); - - g_signal_connect_after (menu_item, + g_signal_connect_after (switcher->priv->home_item, "activate", G_CALLBACK (hd_switcher_menu_item_activated), - switcher); + switcher); + hd_switcher_menu_create_applications_menu (switcher, hdwm); + switcher->priv->notification_groups = g_hash_table_new_full (g_str_hash, g_str_equal, @@ -1224,6 +1226,12 @@ if (switcher->priv->window_dialog) gtk_widget_destroy (switcher->priv->window_dialog); + if (switcher->priv->home_item) + { + g_object_unref (switcher->priv->home_item); + switcher->priv->home_item = NULL; + } + g_object_unref (switcher->priv->icon_theme); hn_as_sound_deinit (switcher->priv->esd_socket); @@ -1828,30 +1836,13 @@ static void hd_switcher_menu_create_applications_menu (HDSwitcherMenu *switcher, HDWM *hdwm) { - GList *children = NULL, *apps = NULL, *l; + GList *items = NULL, *apps = NULL, *l; GtkWidget *separator = NULL; - children = - hildon_desktop_popup_menu_get_children (switcher->priv->menu_applications); - - for (l = children; l != NULL; l = g_list_next (l)) - { - HDWMEntryInfo *info; - - if (GTK_IS_SEPARATOR_MENU_ITEM (l->data)) - info = NULL; - else - info = - hd_switcher_menu_item_get_entry_info - (HD_SWITCHER_MENU_ITEM (l->data)); + g_object_ref (switcher->priv->home_item); - if (info != hd_wm_get_home_info (switcher->hdwm)) - hildon_desktop_popup_menu_remove_item (switcher->priv->menu_applications, - l->data); - } + items = g_list_append (items, switcher->priv->home_item); - g_list_free (children); - apps = g_list_reverse (g_list_copy (hd_wm_get_applications (hdwm))); for (l = apps; l != NULL; l = l->next) @@ -1866,8 +1857,7 @@ { separator = hd_switcher_menu_create_separator (TRUE); - hildon_desktop_popup_menu_add_item - (switcher->priv->menu_applications, GTK_MENU_ITEM (separator)); + items = g_list_append (items, separator); } for (child = children; child != NULL; child = child->next) @@ -1884,8 +1874,7 @@ G_CALLBACK (hd_switcher_menu_item_activated), (gpointer)switcher); - hildon_desktop_popup_menu_add_item - (switcher->priv->menu_applications, GTK_MENU_ITEM (menu_item)); + items = g_list_append (items, menu_item); if (hd_wm_entry_info_is_active (entry)) hildon_desktop_popup_menu_select_item @@ -1899,13 +1888,16 @@ { separator = hd_switcher_menu_create_separator (TRUE); - hildon_desktop_popup_menu_add_item - (switcher->priv->menu_applications, GTK_MENU_ITEM (separator)); + items = g_list_append (items, separator); } g_list_free (children); } + hildon_desktop_popup_menu_replace_items (switcher->priv->menu_applications, + items); + + g_list_free (items); g_list_free (apps); hd_switcher_menu_check_content (switcher); @@ -2171,7 +2163,7 @@ if (menu_item) { hd_switcher_menu_item_set_entry_info (HD_SWITCHER_MENU_ITEM (menu_item), info); - } + } if (!hd_wm_entry_info_is_urgent (info) && hd_wm_entry_info_get_ignore_urgent (info))
- Previous message: [maemo-commits] r13989 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r13991 - projects/haf/trunk/hildon-fm/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]