gtk+ r22227 - in trunk: . gtk
- From: matthiasc svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r22227 - in trunk: . gtk
- Date: Tue, 27 Jan 2009 02:55:03 +0000 (UTC)
Author: matthiasc
Date: Tue Jan 27 02:55:02 2009
New Revision: 22227
URL: http://svn.gnome.org/viewvc/gtk+?rev=22227&view=rev
Log:
* gtk/gtkbutton.c: Activate the action in a regular clicked
handler instead of the default handler, to make it work with
derived classes which don't chain up their clicked handler.
Modified:
trunk/ChangeLog
trunk/gtk/gtkbutton.c
Modified: trunk/gtk/gtkbutton.c
==============================================================================
--- trunk/gtk/gtkbutton.c (original)
+++ trunk/gtk/gtkbutton.c Tue Jan 27 02:55:02 2009
@@ -106,33 +106,30 @@
GParamSpec *pspec);
static void gtk_button_screen_changed (GtkWidget *widget,
GdkScreen *previous_screen);
-static void gtk_button_realize (GtkWidget *widget);
-static void gtk_button_unrealize (GtkWidget *widget);
-static void gtk_button_map (GtkWidget *widget);
-static void gtk_button_unmap (GtkWidget *widget);
-static void gtk_button_style_set (GtkWidget *widget,
- GtkStyle *prev_style);
-static void gtk_button_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
-static void gtk_button_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static gint gtk_button_expose (GtkWidget *widget,
- GdkEventExpose *event);
-static gint gtk_button_button_press (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_button_button_release (GtkWidget *widget,
- GdkEventButton *event);
-static gint gtk_button_grab_broken (GtkWidget *widget,
- GdkEventGrabBroken *event);
-static gint gtk_button_key_release (GtkWidget *widget,
- GdkEventKey *event);
-static gint gtk_button_enter_notify (GtkWidget *widget,
- GdkEventCrossing *event);
-static gint gtk_button_leave_notify (GtkWidget *widget,
- GdkEventCrossing *event);
-static void gtk_real_button_pressed (GtkButton *button);
-static void gtk_real_button_released (GtkButton *button);
-static void gtk_real_button_clicked (GtkButton *button);
+static void gtk_button_realize (GtkWidget * widget);
+static void gtk_button_unrealize (GtkWidget * widget);
+static void gtk_button_map (GtkWidget * widget);
+static void gtk_button_unmap (GtkWidget * widget);
+static void gtk_button_style_set (GtkWidget * widget, GtkStyle * prev_style);
+static void gtk_button_size_request (GtkWidget * widget,
+ GtkRequisition * requisition);
+static void gtk_button_size_allocate (GtkWidget * widget,
+ GtkAllocation * allocation);
+static gint gtk_button_expose (GtkWidget * widget, GdkEventExpose * event);
+static gint gtk_button_button_press (GtkWidget * widget,
+ GdkEventButton * event);
+static gint gtk_button_button_release (GtkWidget * widget,
+ GdkEventButton * event);
+static gint gtk_button_grab_broken (GtkWidget * widget,
+ GdkEventGrabBroken * event);
+static gint gtk_button_key_release (GtkWidget * widget, GdkEventKey * event);
+static gint gtk_button_enter_notify (GtkWidget * widget,
+ GdkEventCrossing * event);
+static gint gtk_button_leave_notify (GtkWidget * widget,
+ GdkEventCrossing * event);
+static void gtk_real_button_pressed (GtkButton * button);
+static void gtk_real_button_released (GtkButton * button);
+static void gtk_real_button_clicked (GtkButton * button);
static void gtk_real_button_activate (GtkButton *button);
static void gtk_button_update_state (GtkButton *button);
static void gtk_button_add (GtkContainer *container,
@@ -211,7 +208,7 @@
klass->pressed = gtk_real_button_pressed;
klass->released = gtk_real_button_released;
- klass->clicked = gtk_real_button_clicked;
+ klass->clicked = NULL;
klass->enter = gtk_button_update_state;
klass->leave = gtk_button_update_state;
klass->activate = gtk_real_button_activate;
@@ -874,6 +871,15 @@
if (priv->action == action)
return;
+ /* This should be a default handler, but for compatibility reasons
+ * we need to support derived classes that don't chain up their
+ * clicked handler.
+ */
+ g_signal_handlers_disconnect_by_func (button, gtk_real_button_clicked, NULL);
+ if (action)
+ g_signal_connect_after (button, "clicked",
+ G_CALLBACK (gtk_real_button_clicked), NULL);
+
gtk_activatable_do_set_related_action (GTK_ACTIVATABLE (button), action);
priv->action = action;
@@ -1700,7 +1706,7 @@
}
static void
-gtk_real_button_clicked (GtkButton *button)
+gtk_real_button_clicked (GtkButton *button)
{
GtkButtonPrivate *priv = GTK_BUTTON_GET_PRIVATE (button);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]