[maemo-commits] [maemo-commits] r11398 - in projects/haf/trunk/hildon-desktop: . libhildondesktop
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed May 2 20:51:21 EEST 2007
- Previous message: [maemo-commits] r11397 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r11399 - in projects/haf/trunk/hildon-theme-layout-4: . rc
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: moimart
Date: 2007-05-02 20:51:20 +0300 (Wed, 02 May 2007)
New Revision: 11398
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/libhildondesktop/hildon-desktop-popup-window.h
Log:
* libhildondesktop/hildon-desktop-popup-menu.c:
- Implemented new signal to handle resizing
- Implemented auto-resizing of parent window.
* libhildondesktop/hildon-desktop-popup-window.[ch]:
- Removed gtk_widget_show_all
- Added method to recalculate position.
* ChangeLog updated.
Modified: projects/haf/trunk/hildon-desktop/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-02 16:58:49 UTC (rev 11397)
+++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-05-02 17:51:20 UTC (rev 11398)
@@ -1,3 +1,12 @@
+2007-05-02 Moises Martinez <moises.martinez at nokia.com>
+
+ * libhildondesktop/hildon-desktop-popup-menu.c:
+ - Implemented new signal to handle resizing
+ - Implemented auto-resizing of parent window.
+ * libhildondesktop/hildon-desktop-popup-window.[ch]:
+ - Removed gtk_widget_show_all
+ - Added method to recalculate position.
+
2007-05-02 Johan Bilien <johan.bilien at nokia.com>
* libhildonwm/hd-wm.c: do not handle the matchbox client list if
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-02 16:58:49 UTC (rev 11397)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-menu.c 2007-05-02 17:51:20 UTC (rev 11398)
@@ -44,9 +44,17 @@
PROP_POPUP_ITEM_HEIGHT=1
};
+enum
+{
+ SIGNAL_POPUP_RESIZE,
+ N_SIGNALS
+};
+
+static gint signals[N_SIGNALS];
+
struct _HildonDesktopPopupMenuPrivate
{
- GtkWidget *scrolled_window;
+ GtkWidget *viewport;
GtkWidget *box_items;
GtkWidget *box_buttons;
@@ -115,6 +123,15 @@
g_type_class_add_private (object_class, sizeof (HildonDesktopPopupMenuPrivate));
+ signals[SIGNAL_POPUP_RESIZE] =
+ g_signal_new ("popup-menu-resize",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
g_object_class_install_property (object_class,
PROP_POPUP_ITEM_HEIGHT,
g_param_spec_uint(
@@ -140,26 +157,21 @@
params);
menu = HILDON_DESKTOP_POPUP_MENU (object);
- menu->priv->scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ menu->priv->viewport = gtk_viewport_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (menu->priv->scrolled_window),
- GTK_POLICY_NEVER,
- GTK_POLICY_NEVER);
+ gtk_box_pack_start (GTK_BOX (menu),
+ menu->priv->viewport,
+ FALSE, FALSE, 0);
+ gtk_widget_show (menu->priv->viewport);
+
gtk_widget_push_composite_child ();
menu->priv->box_items = gtk_vbox_new (FALSE, 0); /* FIXME: add spacing decoration */
- gtk_scrolled_window_add_with_viewport
- (GTK_SCROLLED_WINDOW (menu->priv->scrolled_window),
- menu->priv->box_items);
+ gtk_container_add (GTK_CONTAINER (menu->priv->viewport), menu->priv->box_items);
gtk_widget_show (menu->priv->box_items);
-
- gtk_box_pack_start (GTK_BOX (menu),
- menu->priv->scrolled_window,
- FALSE, FALSE, 0);
- gtk_widget_show (menu->priv->scrolled_window);
menu->priv->box_buttons = gtk_hbox_new (TRUE,0);
@@ -243,9 +255,6 @@
}
}
-
-
-
static gboolean
hildon_desktop_popup_menu_motion_notify (GtkWidget *widget,
GdkEventMotion *event)
@@ -282,8 +291,8 @@
gdouble position;
gint delta = menu->priv->item_height;
GtkAdjustment *adj =
- gtk_scrolled_window_get_vadjustment
- (GTK_SCROLLED_WINDOW (menu->priv->scrolled_window));
+ gtk_viewport_get_vadjustment
+ (GTK_VIEWPORT (menu->priv->viewport));
if (widget == menu->priv->scroll_up)
delta *= -1;
@@ -335,7 +344,7 @@
hildon_desktop_popup_menu_show_controls (HildonDesktopPopupMenu *menu)
{
if (!menu->priv->controls_on)
- {
+ {
gtk_box_pack_start (GTK_BOX (menu),
menu->priv->box_buttons,
FALSE, FALSE, 0);
@@ -386,28 +395,44 @@
break;
}
}
-
+
if (show_scroll_controls)
{
hildon_desktop_popup_menu_show_controls (menu);
gtk_widget_set_size_request
- (menu->priv->scrolled_window, req.width, d_height - menu->priv->item_height);
+ (menu->priv->viewport, req.width, d_height - menu->priv->item_height);
+ if (separators == 0)
+ separators++;
+
menu->priv->upper_hack = d_height - menu->priv->item_height*separators;
}
else
{
hildon_desktop_popup_menu_hide_controls (menu);
gtk_widget_set_size_request
- (menu->priv->scrolled_window, req.width, d_height);
+ (menu->priv->viewport, req.width, d_height);
}
+ gtk_widget_queue_resize (menu->priv->viewport);
+
if (GTK_IS_WINDOW (parent))
{
gtk_widget_size_request (parent, &req);
gtk_widget_set_size_request (parent, req.width, d_height);
- }
+ if (GTK_WIDGET_MAPPED (parent))
+ {
+ g_signal_emit_by_name (menu, "popup-menu-resize");
+
+ gtk_widget_queue_resize (GTK_WIDGET (menu));
+ gtk_widget_queue_resize (parent);
+ }
+
+ if (GTK_WIDGET_REALIZED (parent))
+ gdk_window_resize (parent->window, req.width, d_height);
+ }
+
g_list_free (children);
}
@@ -437,13 +462,12 @@
gtk_widget_set_size_request (menu->priv->box_buttons, req.width, menu->priv->item_height);
}
-
+
gtk_box_pack_start (GTK_BOX (menu->priv->box_items),
GTK_WIDGET (item),
FALSE, FALSE, 0);
-
gtk_widget_show (GTK_WIDGET (item));
-
+
menu->priv->n_items++;
hildon_desktop_popup_menu_parent_size (menu);
@@ -452,25 +476,15 @@
void
hildon_desktop_popup_menu_remove_item (HildonDesktopPopupMenu *menu, GtkMenuItem *item)
{
- GList *children = NULL, *l;
g_assert (HILDON_DESKTOP_IS_POPUP_MENU (menu));
g_return_if_fail (GTK_IS_MENU_ITEM (item));
- children = gtk_container_get_children (GTK_CONTAINER (menu->priv->box_items));
-
- for (l = children; l != NULL; l = g_list_next (l))
- {
- if (l->data == item)
- {
- gtk_container_remove (GTK_CONTAINER (menu->priv->box_items), GTK_WIDGET (item));
- break;
- }
- }
+ gtk_container_remove (GTK_CONTAINER (menu->priv->box_items), GTK_WIDGET (item));
menu->priv->n_items--;
-
- g_list_free (children);
+
+ hildon_desktop_popup_menu_parent_size (menu);
}
GList *
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-02 16:58:49 UTC (rev 11397)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.c 2007-05-02 17:51:20 UTC (rev 11398)
@@ -947,7 +947,7 @@
hildon_desktop_popup_window_calculate_position (popup);
- gtk_widget_show_all (GTK_WIDGET (popup));
+ gtk_widget_show (GTK_WIDGET (popup));
popup_grab_on_window (GTK_WIDGET (popup)->window, activate_time, TRUE); /* Should always succeed */
@@ -969,3 +969,12 @@
gtk_grab_remove (popup->priv->extra_panes[i]);
}
+void
+hildon_desktop_popup_recalculate_position (HildonDesktopPopupWindow *popup)
+{
+ if (!GTK_WIDGET_REALIZED (popup))
+ return;
+
+ hildon_desktop_popup_window_calculate_position (popup);
+}
+
Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.h
===================================================================
--- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.h 2007-05-02 16:58:49 UTC (rev 11397)
+++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-popup-window.h 2007-05-02 17:51:20 UTC (rev 11398)
@@ -94,6 +94,9 @@
void
hildon_desktop_popup_window_popdown (HildonDesktopPopupWindow *popup);
+void
+hildon_desktop_popup_recalculate_position (HildonDesktopPopupWindow *popup);
+
G_BEGIN_DECLS
#endif/*__HILDON_DESKTOP_POPUP_WINDOW_H__*/
- Previous message: [maemo-commits] r11397 - projects/haf/hafbuildbot
- Next message: [maemo-commits] r11399 - in projects/haf/trunk/hildon-theme-layout-4: . rc
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
