I simply like it better, you don't? :) Signed-off-by: Takashi Iwai <ti...@suse.de> --- ui/gtk.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/ui/gtk.c b/ui/gtk.c index 6668bd8226d5..4427d9f6c1e9 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -141,6 +141,7 @@ typedef struct GtkDisplayState GtkWidget *zoom_fit_item; GtkWidget *grab_item; GtkWidget *grab_on_hover_item; + GtkWidget *grab_on_click_item; GtkWidget *vga_item; int nb_vcs; @@ -189,6 +190,11 @@ static bool gd_grab_on_hover(GtkDisplayState *s) return gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(s->grab_on_hover_item)); } +static bool gd_grab_on_click(GtkDisplayState *s) +{ + return gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(s->grab_on_click_item)); +} + static bool gd_on_vga(GtkDisplayState *s) { return gtk_notebook_get_current_page(GTK_NOTEBOOK(s->notebook)) == 0; @@ -685,6 +691,12 @@ static gboolean gd_button_event(GtkWidget *widget, GdkEventButton *button, GtkDisplayState *s = opaque; InputButton btn; + if (button->button == 1 && button->type == GDK_BUTTON_PRESS && + !gd_is_grab_active(s) && gd_grab_on_click(s)) { + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(s->grab_item), TRUE); + return TRUE; + } + if (button->button == 1) { btn = INPUT_BUTTON_LEFT; } else if (button->button == 2) { @@ -1417,6 +1429,9 @@ static GtkWidget *gd_create_menu_view(GtkDisplayState *s, GtkAccelGroup *accel_g s->grab_on_hover_item = gtk_check_menu_item_new_with_mnemonic(_("Grab On _Hover")); gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), s->grab_on_hover_item); + s->grab_on_click_item = gtk_check_menu_item_new_with_mnemonic(_("Grab On _Click")); + gtk_menu_shell_append(GTK_MENU_SHELL(view_menu), s->grab_on_click_item); + s->grab_item = gtk_check_menu_item_new_with_mnemonic(_("_Grab Input")); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->grab_item), "<QEMU>/View/Grab Input"); -- 1.9.1