diff options
| author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2012-02-06 12:28:05 +0000 |
|---|---|---|
| committer | Daniel P. Berrange <berrange@redhat.com> | 2012-02-06 12:28:05 +0000 |
| commit | 0e6f0847d8ff701d6047db5ebcf19c1918f1d6c8 (patch) | |
| tree | 289912962c637b8b7a81083b09bde7f1f3c60378 /src | |
| parent | d6794516590984cc6c40a30acba1f077bb44ab16 (diff) | |
| download | virt-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.c | 11 | ||||
| -rw-r--r-- | src/virt-viewer-notebook.c | 1 |
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)); |
