Merge lp:~cimi/overlay-scrollbar/react-theme-change into lp:overlay-scrollbar

Proposed by Andrea Cimitan
Status: Merged
Approved by: Ted Gould
Approved revision: 199
Merged at revision: 199
Proposed branch: lp:~cimi/overlay-scrollbar/react-theme-change
Merge into: lp:overlay-scrollbar
Diff against target: 76 lines (+27/-4)
1 file modified
os/os-pager.c (+27/-4)
To merge this branch: bzr merge lp:~cimi/overlay-scrollbar/react-theme-change
Reviewer Review Type Date Requested Status
Ted Gould (community) Approve
David Barth (community) Needs Information
Neil J. Patel (community) Approve
Review via email: mp+56608@code.launchpad.net

Description of the change

React to the theme change

To post a comment you must log in.
Revision history for this message
Neil J. Patel (njpatel) wrote :

Looks good, approved!

review: Approve
Revision history for this message
David Barth (dbarth) wrote :

Are you sure pager is always valid in the cb? What happens if the pager is disposed? Is the signal disconnected autoamtically?

review: Needs Information
Revision history for this message
Ted Gould (ted) wrote :

  review approve
  merge approve

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'os/os-pager.c'
2--- os/os-pager.c 2011-04-04 14:30:40 +0000
3+++ os/os-pager.c 2011-04-06 16:21:06 +0000
4@@ -48,6 +48,7 @@
5 gfloat weight;
6 gint width;
7 gint height;
8+ gulong handler_id;
9 };
10
11 static gboolean rectangle_changed (GdkRectangle rectangle1, GdkRectangle rectangle2);
12@@ -57,6 +58,7 @@
13 static void os_pager_create (OsPager *pager);
14 static void os_pager_draw (OsPager *pager);
15 static void os_pager_mask (OsPager *pager);
16+static void os_pager_notify_gtk_theme_name_cb (GObject *object, GParamSpec* pspec, gpointer user_data);
17
18 /* Private functions */
19
20@@ -159,11 +161,11 @@
21
22 gdk_colormap_alloc_color (gdk_drawable_get_colormap (priv->pager_window), &color, FALSE, TRUE);
23
24+ gdk_window_set_background (priv->pager_window, &color);
25+
26+ gdk_window_clear (priv->pager_window);
27+
28 gdk_window_invalidate_rect (gtk_widget_get_window (priv->parent), &priv->allocation, TRUE);
29-
30- gdk_window_set_background (priv->pager_window, &color);
31-
32- gdk_window_clear (priv->pager_window);
33 }
34
35 /* Mask the pager. */
36@@ -181,6 +183,21 @@
37 gdk_window_clear (priv->pager_window);
38 }
39
40+static void
41+os_pager_notify_gtk_theme_name_cb (GObject* gobject,
42+ GParamSpec* pspec,
43+ gpointer user_data)
44+{
45+ OsPager *pager;
46+ OsPagerPrivate *priv;
47+
48+ pager = OS_PAGER (user_data);
49+ priv = pager->priv;
50+
51+ if (priv->pager_window != NULL)
52+ os_pager_draw (pager);
53+}
54+
55 /* Type definition. */
56
57 G_DEFINE_TYPE (OsPager, os_pager, G_TYPE_OBJECT);
58@@ -228,6 +245,9 @@
59
60 priv->animation = os_animation_new (RATE_FADE, DURATION_FADE_OUT,
61 os_pager_change_state_cb, NULL, pager);
62+
63+ priv->handler_id = g_signal_connect (gtk_settings_get_default (), "notify::gtk-theme-name",
64+ G_CALLBACK (os_pager_notify_gtk_theme_name_cb), pager);
65 }
66
67 static void
68@@ -245,6 +265,9 @@
69 priv->animation = NULL;
70 }
71
72+ g_signal_handler_disconnect (gtk_settings_get_default (),
73+ priv->handler_id);
74+
75 G_OBJECT_CLASS (os_pager_parent_class)->dispose (object);
76 }
77

Subscribers

People subscribed via source and target branches