aboutsummaryrefslogtreecommitdiffstats
path: root/widgets/misc
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2012-11-30 02:12:41 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-11-30 02:24:24 +0800
commitd2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a (patch)
tree0a0da6f348d8c41ac3e7712a5c18abe78e23d891 /widgets/misc
parent67024e23ee07266a7b9854648454739e1824f91c (diff)
downloadgsoc2013-evolution-d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a.tar
gsoc2013-evolution-d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a.tar.gz
gsoc2013-evolution-d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a.tar.bz2
gsoc2013-evolution-d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a.tar.lz
gsoc2013-evolution-d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a.tar.xz
gsoc2013-evolution-d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a.tar.zst
gsoc2013-evolution-d2fb5ee1a86539e49f02c1fe9ea10cf55b0b351a.zip
Avoid using GdkEventButton directly in certain places.
Prefer dealing with GdkEvent pointers and using accessor functions like gdk_event_get_button(). This is complicated by the fact that some GtkWidget method declarations still use GdkEventButton pointers, and synthesizing button events pretty much requires direct GdkEventButton access. But GDK seems to be nudging itself toward sealing the GdkEvent union. Likely to happen in GDK4. Mainly clean up signal handlers and leave method overrides alone for now.
Diffstat (limited to 'widgets/misc')
-rw-r--r--widgets/misc/e-buffer-tagger.c35
-rw-r--r--widgets/misc/e-calendar-item.c15
-rw-r--r--widgets/misc/e-dateedit.c6
-rw-r--r--widgets/misc/e-map.c9
4 files changed, 39 insertions, 26 deletions
diff --git a/widgets/misc/e-buffer-tagger.c b/widgets/misc/e-buffer-tagger.c
index 8a0d7ccbc3..b68d414868 100644
--- a/widgets/misc/e-buffer-tagger.c
+++ b/widgets/misc/e-buffer-tagger.c
@@ -466,30 +466,36 @@ update_ctrl_state (GtkTextView *textview,
/* Links can also be activated by clicking. */
static gboolean
textview_event_after (GtkTextView *textview,
- GdkEvent *ev)
+ GdkEvent *event)
{
GtkTextIter start, end, iter;
GtkTextBuffer *buffer;
- GdkEventButton *event;
gint x, y;
GdkModifierType mt = 0;
+ guint event_button = 0;
+ gdouble event_x_win = 0;
+ gdouble event_y_win = 0;
g_return_val_if_fail (GTK_IS_TEXT_VIEW (textview), FALSE);
- if (ev->type == GDK_KEY_PRESS || ev->type == GDK_KEY_RELEASE) {
- GdkEventKey *event_key = (GdkEventKey *) ev;
+ if (event->type == GDK_KEY_PRESS || event->type == GDK_KEY_RELEASE) {
+ guint event_keyval = 0;
- switch (event_key->keyval) {
- case GDK_KEY_Control_L:
- case GDK_KEY_Control_R:
- update_ctrl_state (textview, ev->type == GDK_KEY_PRESS);
- break;
+ gdk_event_get_keyval (event, &event_keyval);
+
+ switch (event_keyval) {
+ case GDK_KEY_Control_L:
+ case GDK_KEY_Control_R:
+ update_ctrl_state (
+ textview,
+ event->type == GDK_KEY_PRESS);
+ break;
}
return FALSE;
}
- if (!gdk_event_get_state (ev, &mt)) {
+ if (!gdk_event_get_state (event, &mt)) {
GdkWindow *window;
GdkDisplay *display;
GdkDeviceManager *device_manager;
@@ -505,12 +511,13 @@ textview_event_after (GtkTextView *textview,
update_ctrl_state (textview, (mt & GDK_CONTROL_MASK) != 0);
- if (ev->type != GDK_BUTTON_RELEASE)
+ if (event->type != GDK_BUTTON_RELEASE)
return FALSE;
- event = (GdkEventButton *) ev;
+ gdk_event_get_button (event, &event_button);
+ gdk_event_get_coords (event, &event_x_win, &event_y_win);
- if (event->button != 1 || (event->state & GDK_CONTROL_MASK) == 0)
+ if (event_button != 1 || (mt & GDK_CONTROL_MASK) == 0)
return FALSE;
buffer = gtk_text_view_get_buffer (textview);
@@ -523,7 +530,7 @@ textview_event_after (GtkTextView *textview,
gtk_text_view_window_to_buffer_coords (
textview,
GTK_TEXT_WINDOW_WIDGET,
- event->x, event->y, &x, &y);
+ event_x_win, event_y_win, &x, &y);
gtk_text_view_get_iter_at_location (textview, &iter, x, y);
diff --git a/widgets/misc/e-calendar-item.c b/widgets/misc/e-calendar-item.c
index 0f38c7b16a..1b1a72281d 100644
--- a/widgets/misc/e-calendar-item.c
+++ b/widgets/misc/e-calendar-item.c
@@ -188,7 +188,7 @@ static gboolean e_calendar_item_ensure_days_visible
gint end_day,
gboolean emission);
static void e_calendar_item_show_popup_menu (ECalendarItem *calitem,
- GdkEventButton *event,
+ GdkEvent *button_event,
gint month_offset);
static void e_calendar_item_on_menu_item_activate
(GtkWidget *menuitem,
@@ -2253,9 +2253,7 @@ e_calendar_item_button_press (ECalendarItem *calitem,
if (event->button.button == 3 && day == -1
&& e_calendar_item_get_display_popup (calitem)) {
e_calendar_item_show_popup_menu (
- calitem,
- (GdkEventButton *) event,
- month_offset);
+ calitem, event, month_offset);
return TRUE;
}
@@ -3529,13 +3527,15 @@ deactivate_menu_cb (GtkWidget *menu)
static void
e_calendar_item_show_popup_menu (ECalendarItem *calitem,
- GdkEventButton *event,
+ GdkEvent *button_event,
gint month_offset)
{
GtkWidget *menu, *submenu, *menuitem, *label;
gint year, month;
const gchar *name;
gchar buffer[64];
+ guint event_button = 0;
+ guint32 event_time;
menu = gtk_menu_new ();
@@ -3582,10 +3582,13 @@ e_calendar_item_show_popup_menu (ECalendarItem *calitem,
menu, "deactivate",
G_CALLBACK (deactivate_menu_cb), NULL);
+ gdk_event_get_button (button_event, &event_button);
+ event_time = gdk_event_get_time (button_event);
+
gtk_menu_popup (
GTK_MENU (menu), NULL, NULL,
e_calendar_item_position_menu, calitem,
- event->button, event->time);
+ event_button, event_time);
}
static void
diff --git a/widgets/misc/e-dateedit.c b/widgets/misc/e-dateedit.c
index 45c4f7148b..e24d4137cb 100644
--- a/widgets/misc/e-dateedit.c
+++ b/widgets/misc/e-dateedit.c
@@ -161,7 +161,7 @@ static gint on_date_popup_key_press (GtkWidget *widget,
GdkEventKey *event,
EDateEdit *dedit);
static gint on_date_popup_button_press (GtkWidget *widget,
- GdkEventButton *event,
+ GdkEvent *button_event,
gpointer data);
static void on_date_popup_date_selected (ECalendarItem *calitem,
EDateEdit *dedit);
@@ -1537,7 +1537,7 @@ on_date_popup_key_press (GtkWidget *widget,
* (This function is yanked from gtkcombo.c) */
static gint
on_date_popup_button_press (GtkWidget *widget,
- GdkEventButton *event,
+ GdkEvent *button_event,
gpointer data)
{
EDateEdit *dedit;
@@ -1545,7 +1545,7 @@ on_date_popup_button_press (GtkWidget *widget,
dedit = data;
- child = gtk_get_event_widget ((GdkEvent *) event);
+ child = gtk_get_event_widget (button_event);
/* We don't ask for button press events on the grab widget, so
* if an event is reported directly to the grab widget, it must
diff --git a/widgets/misc/e-map.c b/widgets/misc/e-map.c
index 40fe589a8c..ebccf385d7 100644
--- a/widgets/misc/e-map.c
+++ b/widgets/misc/e-map.c
@@ -722,15 +722,18 @@ static gint
e_map_button_press (GtkWidget *widget,
GdkEventButton *event)
{
- if (!gtk_widget_has_focus (widget)) gtk_widget_grab_focus (widget);
- return TRUE;
+ if (!gtk_widget_has_focus (widget))
+ gtk_widget_grab_focus (widget);
+
+ return TRUE;
}
static gint
e_map_button_release (GtkWidget *widget,
GdkEventButton *event)
{
- if (event->button != 1) return FALSE;
+ if (event->button != 1)
+ return FALSE;
gdk_pointer_ungrab (event->time);
return TRUE;