[balsa/wip/gtk4: 236/351] Fix fallout from making BalsaMimeWidget opaque



commit 66698a9df1230fbeea3d57439be9cdac43399e8d
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Mon Mar 19 16:42:15 2018 -0400

    Fix fallout from making BalsaMimeWidget opaque
    
    The HTML part code was never tested.

 src/balsa-message.c          |   14 +++++++++++---
 src/balsa-mime-widget-text.c |   23 ++++++++++++++---------
 2 files changed, 25 insertions(+), 12 deletions(-)
---
diff --git a/src/balsa-message.c b/src/balsa-message.c
index aa30b59..944fe25 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -2586,8 +2586,16 @@ mdn_dialog_response(GtkWidget * dialog, gint response, gpointer user_data)
 gboolean
 balsa_message_can_zoom(BalsaMessage * bm)
 {
-    return bm->current_part
-        && libbalsa_html_can_zoom(bm->current_part->mime_widget->widget);
+    gboolean can_zoom = FALSE;
+
+    if (bm->current_part != NULL) {
+        GtkWidget *widget;
+
+        widget = balsa_mime_widget_get_widget(bm->current_part->mime_widget);
+        can_zoom = libbalsa_html_can_zoom(widget);
+    }
+
+    return can_zoom;
 }
 
 /* Zoom an html item. */
@@ -2609,7 +2617,7 @@ balsa_message_zoom(BalsaMessage * bm, gint in_out)
      g_object_set_data(G_OBJECT(bm->message), BALSA_MESSAGE_ZOOM_KEY,
                      GINT_TO_POINTER(zoom));
 
-     libbalsa_html_zoom(bm->current_part->mime_widget->widget, in_out);
+     libbalsa_html_zoom(balsa_mime_widget_get_widget(bm->current_part->mime_widget), in_out);
 
 }
 #endif /* HAVE_HTML_WIDGET */
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index f5a294b..0ecd9a8 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -1211,30 +1211,35 @@ bm_widget_new_html(BalsaMessage * bm, LibBalsaMessageBody * mime_body)
 {
     BalsaMimeWidget *mw = g_object_new(BALSA_TYPE_MIME_WIDGET, NULL);
     GtkWidget *widget;
+    GtkWidget *popup_menu;
 
-    mw->widget =
+    widget =
         libbalsa_html_new(mime_body,
                           (LibBalsaHtmlCallback) bm_widget_on_url,
                           (LibBalsaHtmlCallback) handle_url);
-    g_object_set_data(G_OBJECT(mw->widget), "mime-body", mime_body);
+    g_object_set_data(G_OBJECT(widget), "mime-body", mime_body);
 
-    g_signal_connect(libbalsa_html_get_view_widget(mw->widget),
+    g_signal_connect(libbalsa_html_get_view_widget(widget),
                      "key_press_event",
                      G_CALLBACK(balsa_mime_widget_key_press_event), bm);
-    if ((widget = libbalsa_html_popup_menu_widget(mw->widget))) {
-        g_object_set_data(G_OBJECT(widget), "balsa-message", bm);
-        g_signal_connect(widget, "populate-popup",
-                         G_CALLBACK(bmwt_populate_popup_cb), mw->widget);
+    if ((popup_menu = libbalsa_html_popup_menu_widget(widget)) != NULL) {
+        g_object_set_data(G_OBJECT(popup_menu), "balsa-message", bm);
+        g_signal_connect(popup_menu, "populate-popup",
+                         G_CALLBACK(bmwt_populate_popup_cb), widget);
     } else {
-        mwt->gesture = gtk_gesture_multi_press_new(mw->widget);
+        BalsaMimeWidgetText *mwt = BALSA_MIME_WIDGET_TEXT(mw);
+
+        mwt->gesture = gtk_gesture_multi_press_new(widget);
         gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(mwt->gesture), 0);
         g_signal_connect(mwt->gesture, "pressed",
                          G_CALLBACK(mwt_gesture_pressed_cb), bm);
 
-        g_signal_connect(mw->widget, "popup-menu",
+        g_signal_connect(widget, "popup-menu",
                          G_CALLBACK(balsa_gtk_html_popup), bm);
     }
 
+    balsa_mime_widget_set_widget(mw, widget);
+
     return mw;
 }
 #endif /* defined HAVE_HTML_WIDGET */


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