[PATCH virt-viewer 19/19] Show status page by default if display not ready

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

 



GtkNotebook will use the currently visible widget as default page.
If we don't show status widget before we append the display, the
current page will be on display. Quoting Gtk+ documentation:

"Note that due to historical reasons, GtkNotebook refuses to switch to
a page unless the child widget is visible. Therefore, it is
recommended to show child widgets before adding them to a notebook."
---
 src/virt-viewer-notebook.c |    1 +
 src/virt-viewer-window.c   |    6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/virt-viewer-notebook.c b/src/virt-viewer-notebook.c
index 09e8ec4..cc7136b 100644
--- a/src/virt-viewer-notebook.c
+++ b/src/virt-viewer-notebook.c
@@ -86,6 +86,7 @@ virt_viewer_notebook_init (VirtViewerNotebook *self)
     priv->status = gtk_label_new("");
     gtk_notebook_set_show_tabs(GTK_NOTEBOOK(self), FALSE);
     gtk_notebook_set_show_border(GTK_NOTEBOOK(self), FALSE);
+    gtk_widget_show_all(priv->status);
     gtk_notebook_append_page(GTK_NOTEBOOK(self), priv->status, NULL);
     gdk_color_parse("white", &color);
     gtk_widget_modify_fg(priv->status, GTK_STATE_NORMAL, &color);
diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c
index 4bc427a..7c6e41f 100644
--- a/src/virt-viewer-window.c
+++ b/src/virt-viewer-window.c
@@ -1040,8 +1040,12 @@ virt_viewer_window_set_display(VirtViewerWindow *self, VirtViewerDisplay *displa
         virt_viewer_display_set_zoom_level(VIRT_VIEWER_DISPLAY(priv->display), priv->zoomlevel);
         virt_viewer_display_set_auto_resize(VIRT_VIEWER_DISPLAY(priv->display), priv->auto_resize);
 
-        gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), GTK_WIDGET(display), NULL);
         gtk_widget_show_all(GTK_WIDGET(display));
+        gtk_notebook_append_page(GTK_NOTEBOOK(priv->notebook), GTK_WIDGET(display), NULL);
+        /* switch back to non-display if not ready */
+        if (!(virt_viewer_display_get_show_hint(display) &
+              VIRT_VIEWER_DISPLAY_SHOW_HINT_READY))
+            gtk_notebook_set_current_page(GTK_NOTEBOOK(priv->notebook), 0);
 
         virt_viewer_signal_connect_object(display, "display-pointer-grab",
                                           G_CALLBACK(virt_viewer_window_pointer_grab), self, 0);
-- 
1.7.10.4


[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux