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));