[maemo-commits] [maemo-commits] r12072 - in projects/haf/trunk/hildon-desktop: . libhildondesktop
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Fri Jun 1 18:42:26 EEST 2007
- Previous message: [maemo-commits] r12071 - in projects/haf/trunk/hildon-plugins-settings: . src
- Next message: [maemo-commits] r12073 - in projects/haf/trunk/hildon-plugins-settings: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: jobi Date: 2007-06-01 18:42:24 +0300 (Fri, 01 Jun 2007) New Revision: 12072 Modified: projects/haf/trunk/hildon-desktop/ChangeLog projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-home-item.c projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-area.c Log: 2007-06-01 Johan Bilien <johan.bilien at nokia.com> * libhildondesktop/hildon-home-area.c: - track changes in the applets' state rather than check it each time * libhildondesktop/hildon-desktop-home-item.c: - send proper "notify" when the state changes Modified: projects/haf/trunk/hildon-desktop/ChangeLog =================================================================== --- projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-01 15:22:34 UTC (rev 12071) +++ projects/haf/trunk/hildon-desktop/ChangeLog 2007-06-01 15:42:24 UTC (rev 12072) @@ -1,3 +1,10 @@ +2007-06-01 Johan Bilien <johan.bilien at nokia.com> + + * libhildondesktop/hildon-home-area.c: + - track changes in the applets' state rather than check it each time + * libhildondesktop/hildon-desktop-home-item.c: + - send proper "notify" when the state changes + 2007-06-01 Lucas Rocha <lucas.rocha at nokia.com> * libhildondesktop/hildon-desktop-popup-menu.c: cleanup the scrolling Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-home-item.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-home-item.c 2007-06-01 15:22:34 UTC (rev 12071) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-desktop-home-item.c 2007-06-01 15:42:24 UTC (rev 12072) @@ -410,7 +410,7 @@ "state of the applet", -1, G_MAXINT, - -1, + 0, G_PARAM_READABLE); g_object_class_install_property (object_class, @@ -772,6 +772,7 @@ g_source_remove (priv->timeout); priv->timeout = 0; priv->state = HILDON_DESKTOP_HOME_ITEM_STATE_NORMAL; + g_object_notify (G_OBJECT (widget), "state"); gdk_pointer_ungrab (GDK_CURRENT_TIME); @@ -1491,6 +1492,7 @@ priv->y_offset = event->y; priv->state = HILDON_DESKTOP_HOME_ITEM_STATE_MOVING; } + g_object_notify (G_OBJECT (w), "state"); priv->timeout = g_timeout_add (DRAG_UPDATE_TIMEOUT, (GSourceFunc) @@ -1533,6 +1535,7 @@ g_source_remove (priv->timeout); priv->timeout = 0; priv->state = HILDON_DESKTOP_HOME_ITEM_STATE_NORMAL; + g_object_notify (G_OBJECT (applet), "state"); gdk_pointer_ungrab (event->time); Modified: projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-area.c =================================================================== --- projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-area.c 2007-06-01 15:22:34 UTC (rev 12071) +++ projects/haf/trunk/hildon-desktop/libhildondesktop/hildon-home-area.c 2007-06-01 15:42:24 UTC (rev 12072) @@ -64,7 +64,11 @@ Picture alpha_mask; Picture alpha_mask_unscaled; gint background_width, background_height; - gulong realize_handler, style_set_handler, size_allocate_handler; + gint state; + gulong realize_handler, + style_set_handler, + size_allocate_handler, + state_change_handler; #endif } ChildData; @@ -201,6 +205,9 @@ hildon_home_area_child_realize (GtkWidget *child, HildonHomeArea *area); +static void +hildon_home_area_child_state_change (ChildData *child_data); + #endif @@ -958,8 +965,7 @@ #ifdef HAVE_X_COMPOSITE static void hildon_home_area_child_compose (ChildData *child_data, - HildonHomeArea *area, - gboolean alpha) + HildonHomeArea *area) { HildonHomeAreaPriv *priv; GtkAllocation *alloc; @@ -972,9 +978,9 @@ alloc = &(child_data->widget->allocation); XRenderComposite (GDK_DISPLAY (), - (alpha)?PictOpOver:PictOpSrc, + (child_data->state == 0)?PictOpOver:PictOpSrc, child_data->picture, - (alpha)?child_data->alpha_mask:None, + (child_data->state == 0)?child_data->alpha_mask:None, priv->picture, 0, 0, @@ -1386,24 +1392,28 @@ } -static gint -find_by_window (ChildData *data, Window *w) -{ - return !(data->window == *w); -} - static void -child_is_dragged (ChildData *child, gboolean *is_dragged) +hildon_home_area_child_state_change (ChildData *child_data) { - gint state; + gint state; - g_object_get (child->widget, + g_object_get (child_data->widget, "state", &state, NULL); - if (!*is_dragged && state) - *is_dragged = TRUE; + + g_debug ("state changed to %i", state); + + child_data->state = state; + } + +static gint +find_by_window (ChildData *data, Window *w) +{ + return !(data->window == *w); +} + static gboolean hildon_home_area_expose (GtkWidget *widget, GdkEventExpose *event) @@ -1421,7 +1431,6 @@ XRenderPictureAttributes pa; Window *wchildren, root, parent; int n_children, i; - gboolean is_dragged = FALSE; gdk_window_get_internal_paint_info (widget->window, &drawable, @@ -1473,10 +1482,6 @@ return FALSE; } - g_list_foreach (priv->children_data, - (GFunc)child_is_dragged, - &is_dragged); - for (i = 0; i < n_children; i++) { GList *l = NULL; @@ -1487,8 +1492,7 @@ if (l) hildon_home_area_child_compose (l->data, - HILDON_HOME_AREA (widget), - !is_dragged); + HILDON_HOME_AREA (widget)); } XFree (wchildren); @@ -1910,6 +1914,8 @@ child_data->style_set_handler); g_signal_handler_disconnect (applet, child_data->size_allocate_handler); + g_signal_handler_disconnect (applet, + child_data->state_change_handler); } #endif @@ -2243,16 +2249,23 @@ void hildon_home_area_put (HildonHomeArea *area, GtkWidget *widget, gint x, gint y) { - ChildData *child_data; + ChildData *child_data; + gint state = 0; g_return_if_fail (HILDON_IS_HOME_AREA (area) && GTK_IS_WIDGET (widget)); gtk_widget_set_parent (widget, GTK_WIDGET (area)); + if (HILDON_DESKTOP_IS_HOME_ITEM (widget)) + g_object_get (widget, + "state", &state, + NULL); + child_data = g_new0 (ChildData, 1); child_data->widget = widget; child_data->x = x; child_data->y = y; + child_data->state = state; gtk_container_child_set (GTK_CONTAINER (area), widget, "child-data", child_data, @@ -2274,6 +2287,15 @@ G_CALLBACK (hildon_home_area_child_size_allocate), area); + if (HILDON_DESKTOP_IS_HOME_ITEM (widget)) + child_data->state_change_handler = + g_signal_connect_swapped (widget, "notify::state", + G_CALLBACK ( + hildon_home_area_child_state_change), + child_data); + + + if (GTK_WIDGET_REALIZED (widget)) { hildon_home_area_create_child_data (HILDON_HOME_AREA (area), widget);
- Previous message: [maemo-commits] r12071 - in projects/haf/trunk/hildon-plugins-settings: . src
- Next message: [maemo-commits] r12073 - in projects/haf/trunk/hildon-plugins-settings: . src
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]