2008-09-24 Claudio Saavedra <csaavedra@igalia.com>
[hildon] / src / hildon-time-picker.c
index 24ab648..4ba4d84 100644 (file)
 #include                                        <config.h>
 #endif
 
-#include                                        "hildon-time-picker.h"
-#include                                        "hildon-defines.h"
-#include                                        <gtk/gtk.h>
-#include                                        <gdk/gdkkeysyms.h>
-#include                                        <gdk/gdk.h>
 #include                                        <time.h>
 #include                                        <stdio.h>
 #include                                        <stdlib.h>
 #include                                        <string.h>
 #include                                        <langinfo.h>
 #include                                        <libintl.h>
+#include                                        <gtk/gtk.h>
+#include                                        <gdk/gdkkeysyms.h>
+
+#include                                        "hildon-time-picker.h"
+#include                                        "hildon-defines.h"
 #include                                        "hildon-time-picker-private.h"
 #include                                        "hildon-time-editor.h"
 
@@ -168,7 +168,11 @@ hildon_time_picker_event_box_button_press       (GtkWidget *widget,
                                                  gpointer unused);
 
 static void
-hildon_time_picker_map                          (GtkWidget *widget);
+hildon_time_picker_realize                      (GtkWidget *widget);
+
+static void
+hildon_time_picker_style_set                    (GtkWidget *widget,
+                                                 GtkStyle *previous_style);
 
 static void
 frame_size_request                              (GtkWidget *widget, 
@@ -233,7 +237,8 @@ hildon_time_picker_class_init                   (HildonTimePickerClass *klass)
     gobject_class->finalize = hildon_time_picker_finalize;
     gobject_class->get_property = hildon_time_picker_get_property;
     gobject_class->set_property = hildon_time_picker_set_property;
-    widget_class->map = hildon_time_picker_map;
+    widget_class->realize = hildon_time_picker_realize;
+    widget_class->style_set = hildon_time_picker_style_set;
 
     /**
      * HildonTimePicker:minutes:
@@ -534,15 +539,24 @@ hildon_time_picker_get_property                 (GObject *object,
 }
 
 static void
-hildon_time_picker_map                          (GtkWidget *widget)
+hildon_time_picker_realize                      (GtkWidget *widget)
+{
+    GTK_WIDGET_CLASS (parent_class)->realize(widget);
+
+    /* We only want the border for the dialog. */
+    gdk_window_set_decorations (widget->window, GDK_DECOR_BORDER);
+}
+
+static void
+hildon_time_picker_style_set                    (GtkWidget *widget,
+                                                 GtkStyle *previous_style)
 {
     guint width, height;
     gint i, button;
     HildonTimePickerPrivate *priv = HILDON_TIME_PICKER_GET_PRIVATE (widget);
     g_assert (priv);
 
-    /* Widget is now mapped. Set border for the dialog. */
-    gdk_window_set_decorations (widget->window, GDK_DECOR_BORDER);
+    GTK_WIDGET_CLASS (parent_class)->style_set(widget, previous_style);
 
     /* Update hour/minute up/down buttons sizes from style properties */
     gtk_widget_style_get (widget,
@@ -559,8 +573,6 @@ hildon_time_picker_map                          (GtkWidget *widget)
             }
         }
     }
-
-    GTK_WIDGET_CLASS (parent_class)->map(widget);
 }
 
 /* 
@@ -639,6 +651,8 @@ hildon_time_picker_arrow_press                  (GtkWidget *widget,
     g_object_get (gtk_widget_get_settings (widget), 
                     "gtk-timeout-repeat", &key_repeat, NULL);
 
+    key_repeat *= 8;
+
     /* Keep changing the time as long as button is being pressed.
        The first repeat takes 3 times longer to start than the rest. */
     
@@ -856,6 +870,8 @@ hildon_time_picker_key_repeat_timeout           (gpointer tpicker)
         /* Get button press repeater timeout from settings (in milliseconds) */
         g_object_get (gtk_widget_get_settings ((GtkWidget *) tpicker), 
                         "gtk-timeout-repeat", &key_repeat, NULL);
+
+        key_repeat *= 8;
             
         /* This is the first repeat. Shorten the timeout to key_repeat
            (instead of the first time's 3*key_repeat) */