[gnome-control-center] datetime: make the map insensitive when the panel is locked



commit 0703d545a5d82f0748d30d898659a340d78684bf
Author: William Jon McCann <jmccann redhat com>
Date:   Tue Aug 21 23:16:33 2012 -0400

    datetime: make the map insensitive when the panel is locked
    
    https://bugzilla.gnome.org/show_bug.cgi?id=672445

 panels/datetime/Makefile.am                 |   43 ++++++++++++++++-
 panels/datetime/cc-timezone-map.c           |   72 ++++++++++++++++++++++----
 panels/datetime/data/bg_dim.png             |  Bin 0 -> 95862 bytes
 panels/datetime/data/timezone_-10_dim.png   |  Bin 0 -> 5139 bytes
 panels/datetime/data/timezone_-11_dim.png   |  Bin 0 -> 4815 bytes
 panels/datetime/data/timezone_-1_dim.png    |  Bin 0 -> 4953 bytes
 panels/datetime/data/timezone_-2_dim.png    |  Bin 0 -> 2670 bytes
 panels/datetime/data/timezone_-3.5_dim.png  |  Bin 0 -> 995 bytes
 panels/datetime/data/timezone_-3_dim.png    |  Bin 0 -> 8773 bytes
 panels/datetime/data/timezone_-4.5_dim.png  |  Bin 0 -> 1527 bytes
 panels/datetime/data/timezone_-4_dim.png    |  Bin 0 -> 9836 bytes
 panels/datetime/data/timezone_-5.5_dim.png  |  Bin 0 -> 859 bytes
 panels/datetime/data/timezone_-5_dim.png    |  Bin 0 -> 12224 bytes
 panels/datetime/data/timezone_-6_dim.png    |  Bin 0 -> 8833 bytes
 panels/datetime/data/timezone_-7_dim.png    |  Bin 0 -> 7868 bytes
 panels/datetime/data/timezone_-8_dim.png    |  Bin 0 -> 4261 bytes
 panels/datetime/data/timezone_-9.5_dim.png  |  Bin 0 -> 859 bytes
 panels/datetime/data/timezone_-9_dim.png    |  Bin 0 -> 4972 bytes
 panels/datetime/data/timezone_0_dim.png     |  Bin 0 -> 7074 bytes
 panels/datetime/data/timezone_10.5_dim.png  |  Bin 0 -> 844 bytes
 panels/datetime/data/timezone_10_dim.png    |  Bin 0 -> 8395 bytes
 panels/datetime/data/timezone_11.5_dim.png  |  Bin 0 -> 868 bytes
 panels/datetime/data/timezone_11_dim.png    |  Bin 0 -> 6744 bytes
 panels/datetime/data/timezone_12.75_dim.png |  Bin 0 -> 846 bytes
 panels/datetime/data/timezone_12_dim.png    |  Bin 0 -> 3935 bytes
 panels/datetime/data/timezone_13_dim.png    |  Bin 0 -> 876 bytes
 panels/datetime/data/timezone_14_dim.png    |  Bin 0 -> 4150 bytes
 panels/datetime/data/timezone_1_dim.png     |  Bin 0 -> 10187 bytes
 panels/datetime/data/timezone_2_dim.png     |  Bin 0 -> 8709 bytes
 panels/datetime/data/timezone_3.5_dim.png   |  Bin 0 -> 1781 bytes
 panels/datetime/data/timezone_3_dim.png     |  Bin 0 -> 9877 bytes
 panels/datetime/data/timezone_4.5_dim.png   |  Bin 0 -> 1385 bytes
 panels/datetime/data/timezone_4_dim.png     |  Bin 0 -> 2754 bytes
 panels/datetime/data/timezone_5.5_dim.png   |  Bin 0 -> 3405 bytes
 panels/datetime/data/timezone_5.75_dim.png  |  Bin 0 -> 1596 bytes
 panels/datetime/data/timezone_5_dim.png     |  Bin 0 -> 8117 bytes
 panels/datetime/data/timezone_6.5_dim.png   |  Bin 0 -> 1675 bytes
 panels/datetime/data/timezone_6_dim.png     |  Bin 0 -> 4678 bytes
 panels/datetime/data/timezone_7_dim.png     |  Bin 0 -> 7972 bytes
 panels/datetime/data/timezone_8.75_dim.png  |  Bin 0 -> 7064 bytes
 panels/datetime/data/timezone_8_dim.png     |  Bin 0 -> 9378 bytes
 panels/datetime/data/timezone_9.5_dim.png   |  Bin 0 -> 1611 bytes
 panels/datetime/data/timezone_9_dim.png     |  Bin 0 -> 8383 bytes
 43 files changed, 103 insertions(+), 12 deletions(-)
---
diff --git a/panels/datetime/Makefile.am b/panels/datetime/Makefile.am
index 65ee027..9092cd5 100644
--- a/panels/datetime/Makefile.am
+++ b/panels/datetime/Makefile.am
@@ -20,48 +20,89 @@ uidir = $(pkgdatadir)/ui/datetime
 dist_ui_DATA = \
 	datetime.ui \
 	data/bg.png \
+	data/bg_dim.png \
 	data/cc.png \
 	data/pin.png \
 	data/timezone_0.png \
+	data/timezone_0_dim.png \
 	data/timezone_-10.png \
+	data/timezone_-10_dim.png \
 	data/timezone_10.png \
+	data/timezone_10_dim.png \
 	data/timezone_10.5.png \
+	data/timezone_10.5_dim.png \
 	data/timezone_-1.png \
+	data/timezone_-1_dim.png \
 	data/timezone_1.png \
+	data/timezone_1_dim.png \
 	data/timezone_-11.png \
+	data/timezone_-11_dim.png \
 	data/timezone_11.png \
+	data/timezone_11_dim.png \
 	data/timezone_11.5.png \
+	data/timezone_11.5_dim.png \
 	data/timezone_12.png \
+	data/timezone_12_dim.png \
 	data/timezone_12.75.png \
+	data/timezone_12.75_dim.png \
 	data/timezone_13.png \
+	data/timezone_13_dim.png \
 	data/timezone_14.png \
+	data/timezone_14_dim.png \
 	data/timezone_-2.png \
+	data/timezone_-2_dim.png \
 	data/timezone_2.png \
+	data/timezone_2_dim.png \
 	data/timezone_-3.png \
+	data/timezone_-3_dim.png \
 	data/timezone_3.png \
+	data/timezone_3_dim.png \
 	data/timezone_-3.5.png \
+	data/timezone_-3.5_dim.png \
 	data/timezone_3.5.png \
+	data/timezone_3.5_dim.png \
 	data/timezone_-4.png \
+	data/timezone_-4_dim.png \
 	data/timezone_4.png \
+	data/timezone_4_dim.png \
 	data/timezone_-4.5.png \
+	data/timezone_-4.5_dim.png \
 	data/timezone_4.5.png \
+	data/timezone_4.5_dim.png \
 	data/timezone_-5.png \
+	data/timezone_-5_dim.png \
 	data/timezone_5.png \
+	data/timezone_5_dim.png \
 	data/timezone_-5.5.png \
+	data/timezone_-5.5_dim.png \
 	data/timezone_5.5.png \
+	data/timezone_5.5_dim.png \
 	data/timezone_5.75.png \
+	data/timezone_5.75_dim.png \
 	data/timezone_-6.png \
+	data/timezone_-6_dim.png \
 	data/timezone_6.png \
+	data/timezone_6_dim.png \
 	data/timezone_6.5.png \
+	data/timezone_6.5_dim.png \
 	data/timezone_-7.png \
+	data/timezone_-7_dim.png \
 	data/timezone_7.png \
+	data/timezone_7_dim.png \
 	data/timezone_-8.png \
+	data/timezone_-8_dim.png \
 	data/timezone_8.png \
+	data/timezone_8_dim.png \
 	data/timezone_8.75.png \
+	data/timezone_8.75_dim.png \
 	data/timezone_-9.png \
+	data/timezone_-9_dim.png \
 	data/timezone_9.png \
+	data/timezone_9_dim.png \
 	data/timezone_-9.5.png \
-	data/timezone_9.5.png
+	data/timezone_-9.5_dim.png \
+	data/timezone_9.5.png \
+	data/timezone_9.5_dim.png
 
 tzdatadir = $(pkgdatadir)/datetime
 dist_tzdata_DATA = backward
diff --git a/panels/datetime/cc-timezone-map.c b/panels/datetime/cc-timezone-map.c
index ba7ba40..cf13c5a 100644
--- a/panels/datetime/cc-timezone-map.c
+++ b/panels/datetime/cc-timezone-map.c
@@ -45,6 +45,7 @@ typedef struct
 struct _CcTimezoneMapPrivate
 {
   GdkPixbuf *orig_background;
+  GdkPixbuf *orig_background_dim;
   GdkPixbuf *orig_color_map;
 
   GdkPixbuf *background;
@@ -143,11 +144,8 @@ cc_timezone_map_dispose (GObject *object)
 {
   CcTimezoneMapPrivate *priv = CC_TIMEZONE_MAP (object)->priv;
 
-  if (priv->orig_background)
-    {
-      g_object_unref (priv->orig_background);
-      priv->orig_background = NULL;
-    }
+  g_clear_object (&priv->orig_background);
+  g_clear_object (&priv->orig_background_dim);
 
   if (priv->orig_color_map)
     {
@@ -226,11 +224,17 @@ cc_timezone_map_size_allocate (GtkWidget     *widget,
                                GtkAllocation *allocation)
 {
   CcTimezoneMapPrivate *priv = CC_TIMEZONE_MAP (widget)->priv;
+  GdkPixbuf *pixbuf;
 
   if (priv->background)
     g_object_unref (priv->background);
 
-  priv->background = gdk_pixbuf_scale_simple (priv->orig_background,
+  if (!gtk_widget_is_sensitive (widget))
+    pixbuf = priv->orig_background_dim;
+  else
+    pixbuf = priv->orig_background;
+
+  priv->background = gdk_pixbuf_scale_simple (pixbuf,
                                               allocation->width,
                                               allocation->height,
                                               GDK_INTERP_BILINEAR);
@@ -255,7 +259,6 @@ cc_timezone_map_realize (GtkWidget *widget)
 {
   GdkWindowAttr attr = { 0, };
   GtkAllocation allocation;
-  GdkCursor *cursor;
   GdkWindow *window;
 
   gtk_widget_get_allocation (widget, &allocation);
@@ -274,9 +277,6 @@ cc_timezone_map_realize (GtkWidget *widget)
   window = gdk_window_new (gtk_widget_get_parent_window (widget), &attr,
                            GDK_WA_X | GDK_WA_Y);
 
-  cursor = gdk_cursor_new (GDK_HAND2);
-  gdk_window_set_cursor (window, cursor);
-
   gdk_window_set_user_data (window, widget);
   gtk_widget_set_window (widget, window);
 }
@@ -330,6 +330,7 @@ cc_timezone_map_draw (GtkWidget *widget,
   GError *err = NULL;
   gdouble pointx, pointy;
   char buf[16];
+  const char *fmt;
 
   gtk_widget_get_allocation (widget, &alloc);
 
@@ -338,7 +339,12 @@ cc_timezone_map_draw (GtkWidget *widget,
   cairo_paint (cr);
 
   /* paint hilight */
-  file = g_strdup_printf (DATADIR "/timezone_%s.png",
+  if (gtk_widget_is_sensitive (widget))
+    fmt = DATADIR "/timezone_%s.png";
+  else
+    fmt = DATADIR "/timezone_%s_dim.png";
+
+  file = g_strdup_printf (fmt,
                           g_ascii_formatd (buf, sizeof (buf),
                                            "%g", priv->selected_offset));
   orig_hilight = gdk_pixbuf_new_from_file (file, &err);
@@ -396,6 +402,39 @@ cc_timezone_map_draw (GtkWidget *widget,
   return TRUE;
 }
 
+static void
+update_cursor (GtkWidget *widget)
+{
+  GdkWindow *window;
+  GdkCursor *cursor = NULL;
+
+  if (!gtk_widget_get_realized (widget))
+    return;
+
+  if (gtk_widget_is_sensitive (widget))
+    {
+      GdkDisplay *display;
+      display = gtk_widget_get_display (widget);
+      cursor = gdk_cursor_new_for_display (display, GDK_HAND2);
+    }
+
+  window = gtk_widget_get_window (widget);
+  gdk_window_set_cursor (window, cursor);
+
+  if (cursor)
+    g_object_unref (cursor);
+}
+
+static void
+cc_timezone_map_state_flags_changed (GtkWidget     *widget,
+                                     GtkStateFlags  prev_state)
+{
+  update_cursor (widget);
+
+  if (GTK_WIDGET_CLASS (cc_timezone_map_parent_class)->state_flags_changed)
+    GTK_WIDGET_CLASS (cc_timezone_map_parent_class)->state_flags_changed (widget, prev_state);
+}
+
 
 static void
 cc_timezone_map_class_init (CcTimezoneMapClass *klass)
@@ -415,6 +454,7 @@ cc_timezone_map_class_init (CcTimezoneMapClass *klass)
   widget_class->size_allocate = cc_timezone_map_size_allocate;
   widget_class->realize = cc_timezone_map_realize;
   widget_class->draw = cc_timezone_map_draw;
+  widget_class->state_flags_changed = cc_timezone_map_state_flags_changed;
 
   signals[LOCATION_CHANGED] = g_signal_new ("location-changed",
                                             CC_TYPE_TIMEZONE_MAP,
@@ -551,6 +591,16 @@ cc_timezone_map_init (CcTimezoneMap *self)
       g_clear_error (&err);
     }
 
+  priv->orig_background_dim = gdk_pixbuf_new_from_file (DATADIR "/bg_dim.png",
+                                                        &err);
+
+  if (!priv->orig_background_dim)
+    {
+      g_warning ("Could not load background image: %s",
+                 (err) ? err->message : "Unknown error");
+      g_clear_error (&err);
+    }
+
   priv->orig_color_map = gdk_pixbuf_new_from_file (DATADIR "/cc.png",
                                                    &err);
   if (!priv->orig_color_map)
diff --git a/panels/datetime/data/bg_dim.png b/panels/datetime/data/bg_dim.png
new file mode 100644
index 0000000..3d34b94
Binary files /dev/null and b/panels/datetime/data/bg_dim.png differ
diff --git a/panels/datetime/data/timezone_-10_dim.png b/panels/datetime/data/timezone_-10_dim.png
new file mode 100644
index 0000000..7dd94f4
Binary files /dev/null and b/panels/datetime/data/timezone_-10_dim.png differ
diff --git a/panels/datetime/data/timezone_-11_dim.png b/panels/datetime/data/timezone_-11_dim.png
new file mode 100644
index 0000000..3ed7bb4
Binary files /dev/null and b/panels/datetime/data/timezone_-11_dim.png differ
diff --git a/panels/datetime/data/timezone_-1_dim.png b/panels/datetime/data/timezone_-1_dim.png
new file mode 100644
index 0000000..5a1fd9f
Binary files /dev/null and b/panels/datetime/data/timezone_-1_dim.png differ
diff --git a/panels/datetime/data/timezone_-2_dim.png b/panels/datetime/data/timezone_-2_dim.png
new file mode 100644
index 0000000..da78e75
Binary files /dev/null and b/panels/datetime/data/timezone_-2_dim.png differ
diff --git a/panels/datetime/data/timezone_-3.5_dim.png b/panels/datetime/data/timezone_-3.5_dim.png
new file mode 100644
index 0000000..a72375c
Binary files /dev/null and b/panels/datetime/data/timezone_-3.5_dim.png differ
diff --git a/panels/datetime/data/timezone_-3_dim.png b/panels/datetime/data/timezone_-3_dim.png
new file mode 100644
index 0000000..be9e495
Binary files /dev/null and b/panels/datetime/data/timezone_-3_dim.png differ
diff --git a/panels/datetime/data/timezone_-4.5_dim.png b/panels/datetime/data/timezone_-4.5_dim.png
new file mode 100644
index 0000000..02d0f3b
Binary files /dev/null and b/panels/datetime/data/timezone_-4.5_dim.png differ
diff --git a/panels/datetime/data/timezone_-4_dim.png b/panels/datetime/data/timezone_-4_dim.png
new file mode 100644
index 0000000..809ddf0
Binary files /dev/null and b/panels/datetime/data/timezone_-4_dim.png differ
diff --git a/panels/datetime/data/timezone_-5.5_dim.png b/panels/datetime/data/timezone_-5.5_dim.png
new file mode 100644
index 0000000..cde398b
Binary files /dev/null and b/panels/datetime/data/timezone_-5.5_dim.png differ
diff --git a/panels/datetime/data/timezone_-5_dim.png b/panels/datetime/data/timezone_-5_dim.png
new file mode 100644
index 0000000..85a0325
Binary files /dev/null and b/panels/datetime/data/timezone_-5_dim.png differ
diff --git a/panels/datetime/data/timezone_-6_dim.png b/panels/datetime/data/timezone_-6_dim.png
new file mode 100644
index 0000000..e6de4c6
Binary files /dev/null and b/panels/datetime/data/timezone_-6_dim.png differ
diff --git a/panels/datetime/data/timezone_-7_dim.png b/panels/datetime/data/timezone_-7_dim.png
new file mode 100644
index 0000000..aad26c0
Binary files /dev/null and b/panels/datetime/data/timezone_-7_dim.png differ
diff --git a/panels/datetime/data/timezone_-8_dim.png b/panels/datetime/data/timezone_-8_dim.png
new file mode 100644
index 0000000..7caeec7
Binary files /dev/null and b/panels/datetime/data/timezone_-8_dim.png differ
diff --git a/panels/datetime/data/timezone_-9.5_dim.png b/panels/datetime/data/timezone_-9.5_dim.png
new file mode 100644
index 0000000..9b1b71c
Binary files /dev/null and b/panels/datetime/data/timezone_-9.5_dim.png differ
diff --git a/panels/datetime/data/timezone_-9_dim.png b/panels/datetime/data/timezone_-9_dim.png
new file mode 100644
index 0000000..578b1bd
Binary files /dev/null and b/panels/datetime/data/timezone_-9_dim.png differ
diff --git a/panels/datetime/data/timezone_0_dim.png b/panels/datetime/data/timezone_0_dim.png
new file mode 100644
index 0000000..13e7ac9
Binary files /dev/null and b/panels/datetime/data/timezone_0_dim.png differ
diff --git a/panels/datetime/data/timezone_10.5_dim.png b/panels/datetime/data/timezone_10.5_dim.png
new file mode 100644
index 0000000..359911f
Binary files /dev/null and b/panels/datetime/data/timezone_10.5_dim.png differ
diff --git a/panels/datetime/data/timezone_10_dim.png b/panels/datetime/data/timezone_10_dim.png
new file mode 100644
index 0000000..9521033
Binary files /dev/null and b/panels/datetime/data/timezone_10_dim.png differ
diff --git a/panels/datetime/data/timezone_11.5_dim.png b/panels/datetime/data/timezone_11.5_dim.png
new file mode 100644
index 0000000..00cc5b8
Binary files /dev/null and b/panels/datetime/data/timezone_11.5_dim.png differ
diff --git a/panels/datetime/data/timezone_11_dim.png b/panels/datetime/data/timezone_11_dim.png
new file mode 100644
index 0000000..5a1df4e
Binary files /dev/null and b/panels/datetime/data/timezone_11_dim.png differ
diff --git a/panels/datetime/data/timezone_12.75_dim.png b/panels/datetime/data/timezone_12.75_dim.png
new file mode 100644
index 0000000..cc7dbde
Binary files /dev/null and b/panels/datetime/data/timezone_12.75_dim.png differ
diff --git a/panels/datetime/data/timezone_12_dim.png b/panels/datetime/data/timezone_12_dim.png
new file mode 100644
index 0000000..71514a8
Binary files /dev/null and b/panels/datetime/data/timezone_12_dim.png differ
diff --git a/panels/datetime/data/timezone_13_dim.png b/panels/datetime/data/timezone_13_dim.png
new file mode 100644
index 0000000..90e689d
Binary files /dev/null and b/panels/datetime/data/timezone_13_dim.png differ
diff --git a/panels/datetime/data/timezone_14_dim.png b/panels/datetime/data/timezone_14_dim.png
new file mode 100644
index 0000000..e4f0a0a
Binary files /dev/null and b/panels/datetime/data/timezone_14_dim.png differ
diff --git a/panels/datetime/data/timezone_1_dim.png b/panels/datetime/data/timezone_1_dim.png
new file mode 100644
index 0000000..b36ff22
Binary files /dev/null and b/panels/datetime/data/timezone_1_dim.png differ
diff --git a/panels/datetime/data/timezone_2_dim.png b/panels/datetime/data/timezone_2_dim.png
new file mode 100644
index 0000000..fba1021
Binary files /dev/null and b/panels/datetime/data/timezone_2_dim.png differ
diff --git a/panels/datetime/data/timezone_3.5_dim.png b/panels/datetime/data/timezone_3.5_dim.png
new file mode 100644
index 0000000..76eab2e
Binary files /dev/null and b/panels/datetime/data/timezone_3.5_dim.png differ
diff --git a/panels/datetime/data/timezone_3_dim.png b/panels/datetime/data/timezone_3_dim.png
new file mode 100644
index 0000000..d718bbc
Binary files /dev/null and b/panels/datetime/data/timezone_3_dim.png differ
diff --git a/panels/datetime/data/timezone_4.5_dim.png b/panels/datetime/data/timezone_4.5_dim.png
new file mode 100644
index 0000000..74461fe
Binary files /dev/null and b/panels/datetime/data/timezone_4.5_dim.png differ
diff --git a/panels/datetime/data/timezone_4_dim.png b/panels/datetime/data/timezone_4_dim.png
new file mode 100644
index 0000000..ce18078
Binary files /dev/null and b/panels/datetime/data/timezone_4_dim.png differ
diff --git a/panels/datetime/data/timezone_5.5_dim.png b/panels/datetime/data/timezone_5.5_dim.png
new file mode 100644
index 0000000..c598242
Binary files /dev/null and b/panels/datetime/data/timezone_5.5_dim.png differ
diff --git a/panels/datetime/data/timezone_5.75_dim.png b/panels/datetime/data/timezone_5.75_dim.png
new file mode 100644
index 0000000..1b972ff
Binary files /dev/null and b/panels/datetime/data/timezone_5.75_dim.png differ
diff --git a/panels/datetime/data/timezone_5_dim.png b/panels/datetime/data/timezone_5_dim.png
new file mode 100644
index 0000000..9165f64
Binary files /dev/null and b/panels/datetime/data/timezone_5_dim.png differ
diff --git a/panels/datetime/data/timezone_6.5_dim.png b/panels/datetime/data/timezone_6.5_dim.png
new file mode 100644
index 0000000..7d99a0f
Binary files /dev/null and b/panels/datetime/data/timezone_6.5_dim.png differ
diff --git a/panels/datetime/data/timezone_6_dim.png b/panels/datetime/data/timezone_6_dim.png
new file mode 100644
index 0000000..afcd2b3
Binary files /dev/null and b/panels/datetime/data/timezone_6_dim.png differ
diff --git a/panels/datetime/data/timezone_7_dim.png b/panels/datetime/data/timezone_7_dim.png
new file mode 100644
index 0000000..e59f0db
Binary files /dev/null and b/panels/datetime/data/timezone_7_dim.png differ
diff --git a/panels/datetime/data/timezone_8.75_dim.png b/panels/datetime/data/timezone_8.75_dim.png
new file mode 100644
index 0000000..fb9caf4
Binary files /dev/null and b/panels/datetime/data/timezone_8.75_dim.png differ
diff --git a/panels/datetime/data/timezone_8_dim.png b/panels/datetime/data/timezone_8_dim.png
new file mode 100644
index 0000000..9612511
Binary files /dev/null and b/panels/datetime/data/timezone_8_dim.png differ
diff --git a/panels/datetime/data/timezone_9.5_dim.png b/panels/datetime/data/timezone_9.5_dim.png
new file mode 100644
index 0000000..6a9b9ed
Binary files /dev/null and b/panels/datetime/data/timezone_9.5_dim.png differ
diff --git a/panels/datetime/data/timezone_9_dim.png b/panels/datetime/data/timezone_9_dim.png
new file mode 100644
index 0000000..8cbb2e7
Binary files /dev/null and b/panels/datetime/data/timezone_9_dim.png differ



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]