Destroy security details when clicking icon again
This commit is contained in:
parent
b7f438589f
commit
b8b0bc341d
1 changed files with 11 additions and 2 deletions
|
@ -1304,6 +1304,12 @@ midori_location_action_icon_released_cb (GtkWidget* widget,
|
||||||
gint button,
|
gint button,
|
||||||
GtkAction* action)
|
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)
|
if (icon_pos == GTK_ICON_ENTRY_PRIMARY)
|
||||||
{
|
{
|
||||||
const gchar* title = _("Security details");
|
const gchar* title = _("Security details");
|
||||||
|
@ -1313,7 +1319,7 @@ midori_location_action_icon_released_cb (GtkWidget* widget,
|
||||||
gint root_x, root_y;
|
gint root_x, root_y;
|
||||||
GdkRectangle icon_rect;
|
GdkRectangle icon_rect;
|
||||||
/* FIXME: granite: should return GtkWidget* like GTK+ */
|
/* 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);
|
gchar* markup = g_strdup_printf ("<b>%s</b>", title);
|
||||||
GtkWidget* label = gtk_label_new (markup);
|
GtkWidget* label = gtk_label_new (markup);
|
||||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
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),
|
granite_widgets_pop_over_move_to_coords (GRANITE_WIDGETS_POP_OVER (dialog),
|
||||||
root_x, root_y, TRUE);
|
root_x, root_y, TRUE);
|
||||||
#else
|
#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);
|
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_signal_connect (dialog, "focus-out-event",
|
||||||
G_CALLBACK (midori_location_action_dialog_focus_out_cb), NULL);
|
G_CALLBACK (midori_location_action_dialog_focus_out_cb), NULL);
|
||||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
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)
|
#if defined (HAVE_LIBSOUP_2_34_0)
|
||||||
midori_location_action_show_page_info (widget, GTK_BOX (content_area), dialog);
|
midori_location_action_show_page_info (widget, GTK_BOX (content_area), dialog);
|
||||||
#endif
|
#endif
|
||||||
|
g_signal_connect (dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &dialog);
|
||||||
gtk_widget_show_all (dialog);
|
gtk_widget_show_all (dialog);
|
||||||
}
|
}
|
||||||
if (icon_pos == GTK_ICON_ENTRY_SECONDARY)
|
if (icon_pos == GTK_ICON_ENTRY_SECONDARY)
|
||||||
|
|
Loading…
Reference in a new issue