]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkbutton.c
gtk: remove "gboolean homogeneous" from gtk_box_new()
[~andy/gtk] / gtk / gtkbutton.c
index 93c3f223746f05acf1201f2a6a68202a7388b9ec..2bb6707e29ab263d8213a97d4615e998c2c72f66 100644 (file)
@@ -109,7 +109,7 @@ struct _GtkButtonPrivate
   GtkAction      *action;
 };
 
-static void gtk_button_destroy        (GtkObject          *object);
+static void gtk_button_destroy        (GtkWidget          *widget);
 static void gtk_button_dispose        (GObject            *object);
 static void gtk_button_set_property   (GObject            *object,
                                        guint               prop_id,
@@ -172,11 +172,10 @@ static void gtk_button_set_related_action        (GtkButton            *button,
 static void gtk_button_set_use_action_appearance (GtkButton            *button,
                                                  gboolean              use_appearance);
 
-static void gtk_button_size_request_init         (GtkSizeRequestIface *iface);
-static void gtk_button_get_width                 (GtkSizeRequest      *widget,
+static void gtk_button_get_preferred_width       (GtkWidget           *widget,
                                                  gint                *minimum_size,
                                                  gint                *natural_size);
-static void gtk_button_get_height                (GtkSizeRequest      *widget,
+static void gtk_button_get_preferred_height      (GtkWidget           *widget,
                                                  gint                *minimum_size,
                                                  gint                *natural_size);
   
@@ -184,20 +183,16 @@ static guint button_signals[LAST_SIGNAL] = { 0 };
 
 G_DEFINE_TYPE_WITH_CODE (GtkButton, gtk_button, GTK_TYPE_BIN,
                         G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE,
-                                               gtk_button_activatable_interface_init)
-                        G_IMPLEMENT_INTERFACE (GTK_TYPE_SIZE_REQUEST,
-                                               gtk_button_size_request_init))
+                                               gtk_button_activatable_interface_init))
 
 static void
 gtk_button_class_init (GtkButtonClass *klass)
 {
   GObjectClass *gobject_class;
-  GtkObjectClass *object_class;
   GtkWidgetClass *widget_class;
   GtkContainerClass *container_class;
 
   gobject_class = G_OBJECT_CLASS (klass);
-  object_class = (GtkObjectClass*) klass;
   widget_class = (GtkWidgetClass*) klass;
   container_class = (GtkContainerClass*) klass;
   
@@ -206,8 +201,9 @@ gtk_button_class_init (GtkButtonClass *klass)
   gobject_class->set_property = gtk_button_set_property;
   gobject_class->get_property = gtk_button_get_property;
 
-  object_class->destroy = gtk_button_destroy;
-
+  widget_class->get_preferred_width  = gtk_button_get_preferred_width;
+  widget_class->get_preferred_height = gtk_button_get_preferred_height;
+  widget_class->destroy = gtk_button_destroy;
   widget_class->screen_changed = gtk_button_screen_changed;
   widget_class->realize = gtk_button_realize;
   widget_class->unrealize = gtk_button_unrealize;
@@ -359,7 +355,7 @@ gtk_button_class_init (GtkButtonClass *klass)
    */ 
   button_signals[PRESSED] =
     g_signal_new (I_("pressed"),
-                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_OBJECT_CLASS_TYPE (gobject_class),
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkButtonClass, pressed),
                  NULL, NULL,
@@ -376,7 +372,7 @@ gtk_button_class_init (GtkButtonClass *klass)
    */ 
   button_signals[RELEASED] =
     g_signal_new (I_("released"),
-                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_OBJECT_CLASS_TYPE (gobject_class),
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkButtonClass, released),
                  NULL, NULL,
@@ -391,7 +387,7 @@ gtk_button_class_init (GtkButtonClass *klass)
    */ 
   button_signals[CLICKED] =
     g_signal_new (I_("clicked"),
-                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_OBJECT_CLASS_TYPE (gobject_class),
                  G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
                  G_STRUCT_OFFSET (GtkButtonClass, clicked),
                  NULL, NULL,
@@ -408,7 +404,7 @@ gtk_button_class_init (GtkButtonClass *klass)
    */ 
   button_signals[ENTER] =
     g_signal_new (I_("enter"),
-                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_OBJECT_CLASS_TYPE (gobject_class),
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkButtonClass, enter),
                  NULL, NULL,
@@ -425,7 +421,7 @@ gtk_button_class_init (GtkButtonClass *klass)
    */ 
   button_signals[LEAVE] =
     g_signal_new (I_("leave"),
-                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_OBJECT_CLASS_TYPE (gobject_class),
                  G_SIGNAL_RUN_FIRST,
                  G_STRUCT_OFFSET (GtkButtonClass, leave),
                  NULL, NULL,
@@ -443,7 +439,7 @@ gtk_button_class_init (GtkButtonClass *klass)
    */
   button_signals[ACTIVATE] =
     g_signal_new (I_("activate"),
-                 G_OBJECT_CLASS_TYPE (object_class),
+                 G_OBJECT_CLASS_TYPE (gobject_class),
                  G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
                  G_STRUCT_OFFSET (GtkButtonClass, activate),
                  NULL, NULL,
@@ -542,19 +538,6 @@ gtk_button_class_init (GtkButtonClass *klass)
                                                             2,
                                                             GTK_PARAM_READABLE));
 
-  /**
-   * GtkSettings::gtk-button-images:
-   *
-   * Whether images should be shown on buttons
-   *
-   * Since: 2.4
-   */
-  gtk_settings_install_property (g_param_spec_boolean ("gtk-button-images",
-                                                      P_("Show button images"),
-                                                      P_("Whether images should be shown on buttons"),
-                                                      TRUE,
-                                                      GTK_PARAM_READWRITE));
-
   g_type_class_add_private (gobject_class, sizeof (GtkButtonPrivate));
 }
 
@@ -588,17 +571,17 @@ gtk_button_init (GtkButton *button)
 }
 
 static void
-gtk_button_destroy (GtkObject *object)
+gtk_button_destroy (GtkWidget *widget)
 {
-  GtkButton *button = GTK_BUTTON (object);
-  
+  GtkButton *button = GTK_BUTTON (widget);
+
   if (button->label_text)
     {
       g_free (button->label_text);
       button->label_text = NULL;
     }
 
-  GTK_OBJECT_CLASS (gtk_button_parent_class)->destroy (object);
+  GTK_WIDGET_CLASS (gtk_button_parent_class)->destroy (widget);
 }
 
 static GObject*
@@ -1042,9 +1025,9 @@ gtk_button_construct_child (GtkButton *button)
 
       if (priv->image_position == GTK_POS_LEFT ||
          priv->image_position == GTK_POS_RIGHT)
-       box = gtk_hbox_new (FALSE, image_spacing);
+       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, image_spacing);
       else
-       box = gtk_vbox_new (FALSE, image_spacing);
+       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, image_spacing);
 
       if (priv->align_set)
        align = gtk_alignment_new (priv->xalign, priv->yalign, 0.0, 0.0);
@@ -1571,7 +1554,7 @@ _gtk_button_paint (GtkButton          *button,
   if (gtk_widget_has_default (widget) &&
       GTK_BUTTON (widget)->relief == GTK_RELIEF_NORMAL)
     {
-      gtk_cairo_paint_box (style, cr,
+      gtk_paint_box (style, cr,
                      GTK_STATE_NORMAL, GTK_SHADOW_IN,
                      widget, "buttondefault",
                      x, y, width, height);
@@ -1599,7 +1582,7 @@ _gtk_button_paint (GtkButton          *button,
 
   if (button->relief != GTK_RELIEF_NONE || button->depressed ||
       gtk_widget_get_state(widget) == GTK_STATE_PRELIGHT)
-    gtk_cairo_paint_box (style, cr,
+    gtk_paint_box (style, cr,
                    state_type,
                    shadow_type, widget, "button",
                    x, y, width, height);
@@ -1637,7 +1620,7 @@ _gtk_button_paint (GtkButton          *button,
           y += child_displacement_y;
         }
 
-      gtk_cairo_paint_focus (style, cr,
+      gtk_paint_focus (style, cr,
                        gtk_widget_get_state (widget),
                        widget, "button",
                        x, y, width, height);
@@ -1742,12 +1725,10 @@ gtk_button_enter_notify (GtkWidget        *widget,
                         GdkEventCrossing *event)
 {
   GtkButton *button;
-  GtkWidget *event_widget;
 
   button = GTK_BUTTON (widget);
-  event_widget = gtk_get_event_widget ((GdkEvent*) event);
 
-  if ((event_widget == widget) &&
+  if ((event->window == button->event_window) &&
       (event->detail != GDK_NOTIFY_INFERIOR))
     {
       button->in_button = TRUE;
@@ -1762,14 +1743,12 @@ gtk_button_leave_notify (GtkWidget        *widget,
                         GdkEventCrossing *event)
 {
   GtkButton *button;
-  GtkWidget *event_widget;
 
   button = GTK_BUTTON (widget);
-  event_widget = gtk_get_event_widget ((GdkEvent*) event);
 
-  if ((event_widget == widget) &&
+  if ((event->window == button->event_window) &&
       (event->detail != GDK_NOTIFY_INFERIOR) &&
-      (gtk_widget_get_sensitive (event_widget)))
+      (gtk_widget_get_sensitive (widget)))
     {
       button->in_button = FALSE;
       gtk_button_leave (button);
@@ -1891,14 +1870,7 @@ gtk_button_finish_activate (GtkButton *button,
 
 
 static void
-gtk_button_size_request_init (GtkSizeRequestIface *iface)
-{
-  iface->get_width  = gtk_button_get_width;
-  iface->get_height = gtk_button_get_height;
-}
-
-static void
-gtk_button_get_size (GtkSizeRequest *widget,
+gtk_button_get_size (GtkWidget      *widget,
                     GtkOrientation  orientation,
                     gint           *minimum_size,
                     gint           *natural_size)
@@ -1946,11 +1918,9 @@ gtk_button_get_size (GtkSizeRequest *widget,
       gint child_min, child_nat;
 
       if (orientation == GTK_ORIENTATION_HORIZONTAL)
-       gtk_size_request_get_width (GTK_SIZE_REQUEST (child), 
-                                   &child_min, &child_nat);
+       gtk_widget_get_preferred_width (child, &child_min, &child_nat);
       else
-       gtk_size_request_get_height (GTK_SIZE_REQUEST (child), 
-                                    &child_min, &child_nat);
+       gtk_widget_get_preferred_height (child, &child_min, &child_nat);
 
       minimum += child_min;
       natural += child_nat;
@@ -1964,17 +1934,17 @@ gtk_button_get_size (GtkSizeRequest *widget,
 }
 
 static void 
-gtk_button_get_width (GtkSizeRequest      *widget,
-                     gint                *minimum_size,
-                     gint                *natural_size)
+gtk_button_get_preferred_width (GtkWidget *widget,
+                                gint      *minimum_size,
+                                gint      *natural_size)
 {
   gtk_button_get_size (widget, GTK_ORIENTATION_HORIZONTAL, minimum_size, natural_size);
 }
 
 static void 
-gtk_button_get_height (GtkSizeRequest      *widget,
-                      gint                *minimum_size,
-                      gint                *natural_size)
+gtk_button_get_preferred_height (GtkWidget *widget,
+                                 gint      *minimum_size,
+                                 gint      *natural_size)
 {
   gtk_button_get_size (widget, GTK_ORIENTATION_VERTICAL, minimum_size, natural_size);
 }
@@ -2317,7 +2287,7 @@ gtk_button_screen_changed (GtkWidget *widget,
 {
   GtkButton *button;
   GtkSettings *settings;
-  guint show_image_connection;
+  gulong show_image_connection;
 
   if (!gtk_widget_has_screen (widget))
     return;
@@ -2335,18 +2305,14 @@ gtk_button_screen_changed (GtkWidget *widget,
   settings = gtk_widget_get_settings (widget);
 
   show_image_connection = 
-    GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (settings), 
-                                        "gtk-button-connection"));
+    g_signal_handler_find (settings, G_SIGNAL_MATCH_FUNC, 0, 0,
+                           NULL, gtk_button_setting_changed, NULL);
   
   if (show_image_connection)
     return;
 
-  show_image_connection =
-    g_signal_connect (settings, "notify::gtk-button-images",
-                     G_CALLBACK (gtk_button_setting_changed), NULL);
-  g_object_set_data (G_OBJECT (settings), 
-                    I_("gtk-button-connection"),
-                    GUINT_TO_POINTER (show_image_connection));
+  g_signal_connect (settings, "notify::gtk-button-images",
+                    G_CALLBACK (gtk_button_setting_changed), NULL);
 
   show_image_change_notify (button);
 }