summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-02-06 12:28:05 +0000
committerDaniel P. Berrange <berrange@redhat.com>2012-02-06 12:28:05 +0000
commit0e6f0847d8ff701d6047db5ebcf19c1918f1d6c8 (patch)
tree289912962c637b8b7a81083b09bde7f1f3c60378 /src
parentd6794516590984cc6c40a30acba1f077bb44ab16 (diff)
downloadvirt-viewer-0e6f0847d8ff701d6047db5ebcf19c1918f1d6c8.tar.gz
virt-viewer-0e6f0847d8ff701d6047db5ebcf19c1918f1d6c8.tar.xz
virt-viewer-0e6f0847d8ff701d6047db5ebcf19c1918f1d6c8.zip
Grab the focus when showing the display
Override the grab_focus() method in the display class. Since both VNC and Spice displays are the direct child, let's just grab the child. It can be that this behaviour need to be overriden if Spice or VNC display become more complex (using sub-childs or different objects)
Diffstat (limited to 'src')
-rw-r--r--src/virt-viewer-display.c11
-rw-r--r--src/virt-viewer-notebook.c1
2 files changed, 12 insertions, 0 deletions
diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c
index 8634f81..7f821e5 100644
--- a/src/virt-viewer-display.c
+++ b/src/virt-viewer-display.c
@@ -63,6 +63,7 @@ static void virt_viewer_display_get_property(GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
+static void virt_viewer_display_grab_focus(GtkWidget *widget);
G_DEFINE_ABSTRACT_TYPE(VirtViewerDisplay, virt_viewer_display, GTK_TYPE_BIN)
@@ -93,6 +94,7 @@ virt_viewer_display_class_init(VirtViewerDisplayClass *class)
widget_class->size_request = virt_viewer_display_size_request;
#endif
widget_class->size_allocate = virt_viewer_display_size_allocate;
+ widget_class->grab_focus = virt_viewer_display_grab_focus;
g_object_class_install_property(object_class,
PROP_DESKTOP_WIDTH,
@@ -288,6 +290,15 @@ virt_viewer_display_get_property(GObject *object,
}
+static void
+virt_viewer_display_grab_focus(GtkWidget *widget)
+{
+ GtkBin *bin = GTK_BIN(widget);
+
+ gtk_widget_grab_focus(gtk_bin_get_child(bin));
+}
+
+
static gboolean
virt_viewer_display_idle(gpointer opaque)
{
diff --git a/src/virt-viewer-notebook.c b/src/virt-viewer-notebook.c
index fa28593..b4e09ec 100644
--- a/src/virt-viewer-notebook.c
+++ b/src/virt-viewer-notebook.c
@@ -127,6 +127,7 @@ virt_viewer_notebook_show_display(VirtViewerNotebook *self)
display = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self), 1);
g_warn_if_fail(display != NULL);
+ gtk_widget_grab_focus(display);
gtk_notebook_set_current_page(GTK_NOTEBOOK(self), 1);
gtk_widget_show_all(GTK_WIDGET(self));