From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60800) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WW1ZF-0007Lz-FY for qemu-devel@nongnu.org; Fri, 04 Apr 2014 06:41:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WW1Z9-0000qq-DM for qemu-devel@nongnu.org; Fri, 04 Apr 2014 06:41:49 -0400 Received: from cantor2.suse.de ([195.135.220.15]:47863 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WW1Z9-0000qO-5Z for qemu-devel@nongnu.org; Fri, 04 Apr 2014 06:41:43 -0400 From: Takashi Iwai Date: Fri, 4 Apr 2014 12:41:24 +0200 Message-Id: <1396608084-26986-5-git-send-email-tiwai@suse.de> In-Reply-To: <1396608084-26986-1-git-send-email-tiwai@suse.de> References: <1396608084-26986-1-git-send-email-tiwai@suse.de> Subject: [Qemu-devel] [PATCH v3 4/4] gtk: Add "Grab On Click" option List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann , Anthony Liguori , Cole Robinson I simply like it better, you don't? :) Signed-off-by: Takashi Iwai --- 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), "/View/Grab Input"); -- 1.9.1