[gtk+/wip/attach-params-pass-event: 6/15] 22d090a7b gtkcombobox pass event
- From: William Hua <williamhua src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/attach-params-pass-event: 6/15] 22d090a7b gtkcombobox pass event
- Date: Thu, 18 Feb 2016 16:08:31 +0000 (UTC)
commit 3655be2f347bc8f7fdf68b8cac22dd0b5559acf0
Author: William Hua <william hua canonical com>
Date: Tue Feb 16 17:53:50 2016 -0500
22d090a7b gtkcombobox pass event
gtk/gtkcombobox.c | 45 +++++++++++++++++----------------------------
1 files changed, 17 insertions(+), 28 deletions(-)
---
diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c
index 56d1d6a..336bf5f 100644
--- a/gtk/gtkcombobox.c
+++ b/gtk/gtkcombobox.c
@@ -133,13 +133,13 @@ struct _GtkComboBoxPrivate
GtkCssGadget *gadget;
+ GdkEvent *trigger_event;
+
gulong inserted_id;
gulong deleted_id;
gulong reordered_id;
gulong changed_id;
guint popup_idle_id;
- guint activate_button;
- guint32 activate_time;
guint scroll_timer;
guint resize_idle_id;
@@ -373,7 +373,7 @@ static void gtk_combo_box_menu_destroy (GtkComboBox *combo_box)
static gboolean gtk_combo_box_menu_button_press (GtkWidget *widget,
- GdkEventButton *event,
+ GdkEvent *event,
gpointer user_data);
static void gtk_combo_box_menu_activate (GtkWidget *menu,
const gchar *path,
@@ -383,8 +383,7 @@ static gboolean gtk_combo_box_menu_key_press (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
static void gtk_combo_box_menu_popup (GtkComboBox *combo_box,
- guint button,
- guint32 activate_time);
+ const GdkEvent *event);
/* cell layout */
static GtkCellArea *gtk_combo_box_cell_layout_get_area (GtkCellLayout *cell_layout);
@@ -2168,9 +2167,8 @@ update_menu_sensitivity (GtkComboBox *combo_box,
}
static void
-gtk_combo_box_menu_popup (GtkComboBox *combo_box,
- guint button,
- guint32 activate_time)
+gtk_combo_box_menu_popup (GtkComboBox *combo_box,
+ const GdkEvent *event)
{
GtkComboBoxPrivate *priv = combo_box->priv;
GtkTreePath *path;
@@ -2241,11 +2239,9 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box,
g_object_unref);
gtk_menu_popup_with_params (GTK_MENU (priv->popup_widget),
- NULL,
+ event,
NULL,
attach_widget,
- button,
- activate_time,
TRUE,
GDK_WINDOW_TYPE_HINT_COMBO,
params);
@@ -2290,11 +2286,9 @@ gtk_combo_box_menu_popup (GtkComboBox *combo_box,
g_object_unref);
gtk_menu_popup_with_params (GTK_MENU (priv->popup_widget),
+ event,
NULL,
NULL,
- NULL,
- button,
- activate_time,
TRUE,
GDK_WINDOW_TYPE_HINT_COMBO,
params);
@@ -2388,9 +2382,7 @@ gtk_combo_box_popup_for_device (GtkComboBox *combo_box,
if (GTK_IS_MENU (priv->popup_widget))
{
- gtk_combo_box_menu_popup (combo_box,
- priv->activate_button,
- priv->activate_time);
+ gtk_combo_box_menu_popup (combo_box, priv->trigger_event);
return;
}
@@ -2872,21 +2864,21 @@ gtk_combo_box_menu_destroy (GtkComboBox *combo_box)
/* callbacks */
static gboolean
-gtk_combo_box_menu_button_press (GtkWidget *widget,
- GdkEventButton *event,
- gpointer user_data)
+gtk_combo_box_menu_button_press (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer user_data)
{
GtkComboBox *combo_box = GTK_COMBO_BOX (user_data);
GtkComboBoxPrivate *priv = combo_box->priv;
if (GTK_IS_MENU (priv->popup_widget) &&
- event->type == GDK_BUTTON_PRESS && event->button == GDK_BUTTON_PRIMARY)
+ event->type == GDK_BUTTON_PRESS && event->button.button == GDK_BUTTON_PRIMARY)
{
if (gtk_widget_get_focus_on_click (GTK_WIDGET (combo_box)) &&
!gtk_widget_has_focus (priv->button))
gtk_widget_grab_focus (priv->button);
- gtk_combo_box_menu_popup (combo_box, event->button, event->time);
+ gtk_combo_box_menu_popup (combo_box, event);
return TRUE;
}
@@ -4508,9 +4500,8 @@ popup_idle (gpointer data)
NULL);
gtk_combo_box_popup (combo_box);
+ g_clear_pointer (&priv->trigger_event, gdk_event_free);
priv->popup_idle_id = 0;
- priv->activate_button = 0;
- priv->activate_time = 0;
return FALSE;
}
@@ -4553,10 +4544,8 @@ gtk_combo_box_start_editing (GtkCellEditable *cell_editable,
{
if (event && event->type == GDK_BUTTON_PRESS)
{
- GdkEventButton *event_button = (GdkEventButton *)event;
-
- priv->activate_button = event_button->button;
- priv->activate_time = event_button->time;
+ g_clear_pointer (&priv->trigger_event, gdk_event_free);
+ priv->trigger_event = gdk_event_copy (event);
}
priv->popup_idle_id =
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]