Commit 6a290bde authored by Matthias Clasen's avatar Matthias Clasen Committed by Carlos Garnacho

GtkColorSwatch: Use gesture for button events too

parent 6896c979
...@@ -93,6 +93,7 @@ gtk_color_swatch_init (GtkColorSwatch *swatch) ...@@ -93,6 +93,7 @@ gtk_color_swatch_init (GtkColorSwatch *swatch)
gtk_gesture_attach (swatch->priv->long_press_gesture, GTK_PHASE_BUBBLE); gtk_gesture_attach (swatch->priv->long_press_gesture, GTK_PHASE_BUBBLE);
swatch->priv->multipress_gesture = gtk_gesture_multi_press_new (GTK_WIDGET (swatch)); swatch->priv->multipress_gesture = gtk_gesture_multi_press_new (GTK_WIDGET (swatch));
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (swatch->priv->multipress_gesture), FALSE);
g_signal_connect (swatch->priv->multipress_gesture, "pressed", g_signal_connect (swatch->priv->multipress_gesture, "pressed",
G_CALLBACK (tap_action), swatch); G_CALLBACK (tap_action), swatch);
gtk_gesture_attach (swatch->priv->multipress_gesture, GTK_PHASE_BUBBLE); gtk_gesture_attach (swatch->priv->multipress_gesture, GTK_PHASE_BUBBLE);
...@@ -455,7 +456,8 @@ popup_position_func (GtkMenu *menu, ...@@ -455,7 +456,8 @@ popup_position_func (GtkMenu *menu,
static void static void
do_popup (GtkWidget *swatch, do_popup (GtkWidget *swatch,
GdkEventButton *event) gint button,
gint time)
{ {
GtkWidget *menu; GtkWidget *menu;
GtkWidget *item; GtkWidget *item;
...@@ -474,41 +476,13 @@ do_popup (GtkWidget *swatch, ...@@ -474,41 +476,13 @@ do_popup (GtkWidget *swatch,
gtk_widget_show_all (item); gtk_widget_show_all (item);
if (event) if (button != 0)
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
NULL, NULL, event->button, event->time); NULL, NULL, button, time);
else else
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
popup_position_func, swatch, popup_position_func, swatch,
0, gtk_get_current_event_time ()); button, time);
}
static gboolean
swatch_button_press (GtkWidget *widget,
GdkEventButton *event)
{
GtkColorSwatch *swatch = GTK_COLOR_SWATCH (widget);
gtk_widget_grab_focus (widget);
if (gdk_event_triggers_context_menu ((GdkEvent *) event) &&
swatch->priv->has_color)
{
do_popup (widget, event);
return TRUE;
}
else if (event->type == GDK_2BUTTON_PRESS &&
event->button == GDK_BUTTON_PRIMARY)
{
g_signal_emit (swatch, signals[ACTIVATE], 0);
return TRUE;
}
else if (event->button == GDK_BUTTON_PRIMARY)
{
return TRUE;
}
return FALSE;
} }
static gboolean static gboolean
...@@ -533,19 +507,6 @@ swatch_primary_action (GtkColorSwatch *swatch) ...@@ -533,19 +507,6 @@ swatch_primary_action (GtkColorSwatch *swatch)
return FALSE; return FALSE;
} }
static gboolean
swatch_button_release (GtkWidget *widget,
GdkEventButton *event)
{
GtkColorSwatch *swatch = GTK_COLOR_SWATCH (widget);
if (event->button == GDK_BUTTON_PRIMARY &&
swatch->priv->contains_pointer)
return swatch_primary_action (swatch);
return FALSE;
}
static void static void
hold_action (GtkGestureLongPress *gesture, hold_action (GtkGestureLongPress *gesture,
gdouble x, gdouble x,
...@@ -563,8 +524,22 @@ tap_action (GtkGestureMultiPress *gesture, ...@@ -563,8 +524,22 @@ tap_action (GtkGestureMultiPress *gesture,
gdouble y, gdouble y,
GtkColorSwatch *swatch) GtkColorSwatch *swatch)
{ {
if (n_press == 1) guint button;
swatch_primary_action (swatch);
button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture));
if (button == GDK_BUTTON_PRIMARY)
{
if (n_press == 1)
swatch_primary_action (swatch);
else if (n_press > 1)
g_signal_emit (swatch, signals[ACTIVATE], 0);
}
else if (button == GDK_BUTTON_SECONDARY)
{
if (swatch->priv->has_color)
do_popup (GTK_WIDGET (swatch), button, gtk_get_current_event_time ());
}
} }
static void static void
...@@ -660,7 +635,7 @@ swatch_size_allocate (GtkWidget *widget, ...@@ -660,7 +635,7 @@ swatch_size_allocate (GtkWidget *widget,
static gboolean static gboolean
swatch_popup_menu (GtkWidget *swatch) swatch_popup_menu (GtkWidget *swatch)
{ {
do_popup (swatch, NULL); do_popup (swatch, 0, gtk_get_current_event_time ());
return TRUE; return TRUE;
} }
...@@ -746,8 +721,6 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class) ...@@ -746,8 +721,6 @@ gtk_color_swatch_class_init (GtkColorSwatchClass *class)
widget_class->drag_data_received = swatch_drag_data_received; widget_class->drag_data_received = swatch_drag_data_received;
widget_class->key_press_event = swatch_key_press; widget_class->key_press_event = swatch_key_press;
widget_class->popup_menu = swatch_popup_menu; widget_class->popup_menu = swatch_popup_menu;
widget_class->button_press_event = swatch_button_press;
widget_class->button_release_event = swatch_button_release;
widget_class->enter_notify_event = swatch_enter_notify; widget_class->enter_notify_event = swatch_enter_notify;
widget_class->leave_notify_event = swatch_leave_notify; widget_class->leave_notify_event = swatch_leave_notify;
widget_class->realize = swatch_realize; widget_class->realize = swatch_realize;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment