[balsa] mblist: Stop using direct access to GdkEvent



commit da425a4faf325812bc0bbed06e4dae2006027585
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Jun 6 14:21:22 2020 -0400

    mblist: Stop using direct access to GdkEvent
    
    Use GdkEvent getters instead of directly accessing fields.
    
    * src/balsa-mblist.c (bmbl_select_mailbox), (bmbl_mru_selected_cb):

 ChangeLog          |  8 ++++++++
 src/balsa-mblist.c | 31 +++++++++++++++++++++----------
 2 files changed, 29 insertions(+), 10 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index d31e6a972..bed56837f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2020-06-06  Peter Bloomfield  <pbloomfield bellsouth net>
+
+       mblist: Stop using direct access to GdkEvent structs
+
+       Use GdkEvent getters instead of directly accessing fields.
+
+       * src/balsa-mblist.c (bmbl_select_mailbox), (bmbl_mru_selected_cb):
+
 2020-06-06  Peter Bloomfield  <pbloomfield bellsouth net>
 
        compose window: Connect to the "pressed" signal of a
diff --git a/src/balsa-mblist.c b/src/balsa-mblist.c
index cb12f94da..fc9f81e58 100644
--- a/src/balsa-mblist.c
+++ b/src/balsa-mblist.c
@@ -867,8 +867,10 @@ bmbl_select_mailbox(GtkTreeSelection * selection, gpointer data)
     GtkTreeModel *model =
         gtk_tree_view_get_model(tree_view);
     GtkTreePath *path;
+    guint button;
+    gdouble x_win, y_win;
 
-    if (!event) {
+    if (event == NULL) {
        GtkTreeIter iter;
 
        if (gtk_tree_selection_get_selected(selection, NULL, &iter)) {
@@ -886,20 +888,23 @@ bmbl_select_mailbox(GtkTreeSelection * selection, gpointer data)
        g_signal_handlers_block_by_func(selection, bmbl_select_mailbox, NULL);
        gtk_tree_selection_unselect_all(selection);
        g_signal_handlers_unblock_by_func(selection, bmbl_select_mailbox, NULL);
+
         return;
     }
-    if (event->type != GDK_BUTTON_PRESS
+
+    if (gdk_event_get_event_type(event) != GDK_BUTTON_PRESS
             /* keyboard navigation */
-        || event->button.button != 1
+        || !gdk_event_get_button(event, &button) || button != 1
             /* soft select */
-        || event->button.window != gtk_tree_view_get_bin_window(tree_view)
+        || gdk_event_get_window(event) != gtk_tree_view_get_bin_window(tree_view)
             /* click on a different widget */ ) {
         gdk_event_free(event);
+
         return;
     }
 
-    if (!gtk_tree_view_get_path_at_pos(tree_view, event->button.x,
-                                       event->button.y, &path,
+    if (!gdk_event_get_coords(event, &x_win, &y_win) ||
+        !gtk_tree_view_get_path_at_pos(tree_view, (gint) x_win, (gint) y_win, &path,
                                        NULL, NULL, NULL)) {
         /* GtkTreeView selects the first node in the tree when the
          * widget first gets the focus, whether it's a keyboard event or
@@ -1916,19 +1921,25 @@ bmbl_mru_selected_cb(GtkTreeSelection * selection, gpointer data)
 {
     GdkEvent *event;
     GtkTreeView *tree_view;
+    gdouble x_win, y_win;
     GtkTreePath *path;
 
     if (!data)
         return;
 
     event = gtk_get_current_event();
-    if (!event)
+    if (event == NULL)
+        return;
+
+    if (gdk_event_get_event_type(event) != GDK_BUTTON_PRESS ||
+        !gdk_event_get_coords(event, &x_win, &y_win)) {
+        gdk_event_free(event);
         return;
+    }
 
     tree_view = gtk_tree_selection_get_tree_view(selection);
-    if (event->type != GDK_BUTTON_PRESS ||
-        !gtk_tree_view_get_path_at_pos(tree_view, event->button.x,
-                                       event->button.y, &path,
+
+    if (!gtk_tree_view_get_path_at_pos(tree_view, (gint) x_win, (gint) y_win, &path,
                                        NULL, NULL, NULL)) {
         gtk_tree_selection_unselect_all(selection);
         gdk_event_free(event);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]