From 02930b74e0ff6b8ef0d308d41ea08a036a2bc37d Mon Sep 17 00:00:00 2001 From: Thomas Wood Date: Wed, 11 Sep 2013 17:02:25 +0100 Subject: [PATCH] display: ensure the display labels remain visible when dialogs are open https://bugzilla.gnome.org/show_bug.cgi?id=707930 --- panels/display/cc-display-panel.c | 34 ++++++++++++++++++------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c index 33109d714..41c433992 100644 --- a/panels/display/cc-display-panel.c +++ b/panels/display/cc-display-panel.c @@ -1454,6 +1454,22 @@ apply_current_configuration (CcDisplayPanel *self) } } +static void +dialog_toplevel_focus_changed (GtkWindow *window, + GParamSpec *pspec, + CcDisplayPanel *self) +{ + CcDisplayPanelPrivate *priv = self->priv; + + if (priv->labeler == NULL) + return; + + if (gtk_window_has_toplevel_focus (window)) + cc_rr_labeler_show (priv->labeler); + else + cc_rr_labeler_hide (priv->labeler); +} + static void show_arrange_displays_dialog (GtkButton *button, CcDisplayPanel *panel) @@ -1463,6 +1479,8 @@ show_arrange_displays_dialog (GtkButton *button, gint response; priv->dialog = gtk_dialog_new (); + g_signal_connect (priv->dialog, "notify::has-toplevel-focus", + G_CALLBACK (dialog_toplevel_focus_changed), panel); gtk_window_set_title (GTK_WINDOW (priv->dialog), _("Arrange Combined Displays")); gtk_window_set_transient_for (GTK_WINDOW (priv->dialog), GTK_WINDOW (cc_shell_get_toplevel (cc_panel_get_shell (CC_PANEL (panel))))); @@ -1731,20 +1749,6 @@ setup_listbox_row_activated (GtkListBox *list_box, update_apply_button (panel); } -static void -dialog_toplevel_focus_changed (GtkWindow *window, - GParamSpec *pspec, - CcDisplayPanel *self) -{ - if (self->priv->labeler == NULL) - return; - if (gtk_window_has_toplevel_focus (window)) - cc_rr_labeler_show (self->priv->labeler); - else - cc_rr_labeler_hide (self->priv->labeler); -} - - static void rotate_left_clicked (GtkButton *button, CcDisplayPanel *panel) @@ -1878,6 +1882,8 @@ show_setup_dialog (CcDisplayPanel *panel) priv->dialog = gtk_dialog_new (); + g_signal_connect (priv->dialog, "notify::has-toplevel-focus", + G_CALLBACK (dialog_toplevel_focus_changed), panel); gtk_window_set_title (GTK_WINDOW (priv->dialog), gnome_rr_output_info_get_display_name (priv->current_output)); gtk_window_set_transient_for (GTK_WINDOW (priv->dialog),