Merge branch 'matthiasc/for-master' into 'master'
modelbutton: Unify activation code paths See merge request GNOME/gtk!1854
This commit is contained in:
@@ -183,7 +183,14 @@ struct _GtkModelButton
|
||||
guint iconic : 1;
|
||||
};
|
||||
|
||||
typedef GtkWidgetClass GtkModelButtonClass;
|
||||
typedef struct _GtkModelButtonClass GtkModelButtonClass;
|
||||
|
||||
struct _GtkModelButtonClass
|
||||
{
|
||||
GtkWidgetClass parent_class;
|
||||
|
||||
void (* clicked) (GtkModelButton *button);
|
||||
};
|
||||
|
||||
static void gtk_model_button_actionable_iface_init (GtkActionableInterface *iface);
|
||||
G_DEFINE_TYPE_WITH_CODE (GtkModelButton, gtk_model_button, GTK_TYPE_WIDGET,
|
||||
@@ -968,11 +975,7 @@ close_menu (GtkModelButton *self)
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_model_button_clicked (GtkGestureClick *gesture,
|
||||
guint n_press,
|
||||
double x,
|
||||
double y,
|
||||
GtkModelButton *self)
|
||||
gtk_model_button_clicked (GtkModelButton *self)
|
||||
{
|
||||
if (self->menu_name != NULL)
|
||||
{
|
||||
@@ -994,8 +997,6 @@ gtk_model_button_clicked (GtkGestureClick *gesture,
|
||||
close_menu (self);
|
||||
}
|
||||
|
||||
g_signal_emit (self, signals[SIGNAL_CLICKED], 0);
|
||||
|
||||
if (self->action_helper)
|
||||
gtk_action_helper_activate (self->action_helper);
|
||||
}
|
||||
@@ -1094,6 +1095,8 @@ gtk_model_button_class_init (GtkModelButtonClass *class)
|
||||
widget_class->focus = gtk_model_button_focus;
|
||||
widget_class->get_accessible = gtk_model_button_get_accessible;
|
||||
|
||||
class->clicked = gtk_model_button_clicked;
|
||||
|
||||
/**
|
||||
* GtkModelButton:role:
|
||||
*
|
||||
@@ -1221,7 +1224,7 @@ gtk_model_button_class_init (GtkModelButtonClass *class)
|
||||
signals[SIGNAL_CLICKED] = g_signal_new (I_("clicked"),
|
||||
G_OBJECT_CLASS_TYPE (object_class),
|
||||
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
|
||||
0,
|
||||
G_STRUCT_OFFSET (GtkModelButtonClass, clicked),
|
||||
NULL, NULL,
|
||||
NULL,
|
||||
G_TYPE_NONE, 0);
|
||||
@@ -1365,6 +1368,12 @@ focus_in_cb (GtkEventController *controller,
|
||||
gtk_popover_menu_set_active_item (GTK_POPOVER_MENU (popover), target);
|
||||
}
|
||||
|
||||
static void
|
||||
emit_clicked (GtkModelButton *button)
|
||||
{
|
||||
g_signal_emit (button, signals[SIGNAL_CLICKED], 0);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_model_button_init (GtkModelButton *self)
|
||||
{
|
||||
@@ -1398,7 +1407,7 @@ gtk_model_button_init (GtkModelButton *self)
|
||||
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), FALSE);
|
||||
gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (gesture), TRUE);
|
||||
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_PRIMARY);
|
||||
g_signal_connect (gesture, "released", G_CALLBACK (gtk_model_button_clicked), self);
|
||||
g_signal_connect_swapped (gesture, "released", G_CALLBACK (emit_clicked), self);
|
||||
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE);
|
||||
gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user