[Xfce4-commits] <midori:master> Destroy security details when clicking icon again

Christian Dywan noreply at xfce.org
Thu Jul 19 21:16:07 CEST 2012


Updating branch refs/heads/master
         to b8b0bc341dc7d5d3af9fd751accf607306382c9b (commit)
       from b7f438589f70849b641f3dbd6781a466502630d7 (commit)

commit b8b0bc341dc7d5d3af9fd751accf607306382c9b
Author: Christian Dywan <christian at twotoasts.de>
Date:   Thu Jul 19 21:09:41 2012 +0200

    Destroy security details when clicking icon again

 midori/midori-locationaction.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/midori/midori-locationaction.c b/midori/midori-locationaction.c
index 64957c3..1c509ca 100644
--- a/midori/midori-locationaction.c
+++ b/midori/midori-locationaction.c
@@ -1304,6 +1304,12 @@ midori_location_action_icon_released_cb (GtkWidget*           widget,
                                          gint                 button,
                                          GtkAction*           action)
 {
+    /* The dialog should "toggle" like a menu, as far as users go
+       FIXME: Half-working: the dialog closes but re-opens */
+    static GtkWidget* dialog = NULL;
+    if (icon_pos == GTK_ICON_ENTRY_PRIMARY && dialog != NULL)
+        gtk_widget_destroy (dialog);
+
     if (icon_pos == GTK_ICON_ENTRY_PRIMARY)
     {
         const gchar* title = _("Security details");
@@ -1313,7 +1319,7 @@ midori_location_action_icon_released_cb (GtkWidget*           widget,
         gint root_x, root_y;
         GdkRectangle icon_rect;
         /* FIXME: granite: should return GtkWidget* like GTK+ */
-        GtkWidget* dialog = (GtkWidget*)granite_widgets_pop_over_new ();
+        dialog = (GtkWidget*)granite_widgets_pop_over_new ();
         gchar* markup = g_strdup_printf ("<b>%s</b>", title);
         GtkWidget* label = gtk_label_new (markup);
         content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
@@ -1327,8 +1333,10 @@ midori_location_action_icon_released_cb (GtkWidget*           widget,
         granite_widgets_pop_over_move_to_coords (GRANITE_WIDGETS_POP_OVER (dialog),
             root_x, root_y, TRUE);
         #else
-        GtkWidget* dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (gtk_widget_get_toplevel (widget)),
+        dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (gtk_widget_get_toplevel (widget)),
             GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR, NULL, NULL);
+        /* FIXME: check focus-in on the transient-for window instead of
+                  focus-out-event */
         g_signal_connect (dialog, "focus-out-event",
             G_CALLBACK (midori_location_action_dialog_focus_out_cb), NULL);
         content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
@@ -1347,6 +1355,7 @@ midori_location_action_icon_released_cb (GtkWidget*           widget,
         #if defined (HAVE_LIBSOUP_2_34_0)
         midori_location_action_show_page_info (widget, GTK_BOX (content_area), dialog);
         #endif
+        g_signal_connect (dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &dialog);
         gtk_widget_show_all (dialog);
     }
     if (icon_pos == GTK_ICON_ENTRY_SECONDARY)


More information about the Xfce4-commits mailing list