* [Qemu-devel] [PULL 0/3] gtk fixes. @ 2014-03-17 13:39 Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line Gerd Hoffmann ` (3 more replies) 0 siblings, 4 replies; 6+ messages in thread From: Gerd Hoffmann @ 2014-03-17 13:39 UTC (permalink / raw) To: qemu-devel; +Cc: Gerd Hoffmann Hi, gtk pull third round, with buildfix applied to patch #1. please pull, Gerd The following changes since commit f4b11eee2f562c23b3efc33b96ba4542c9ca81aa: Makefile: Fix "make clean" (2014-03-17 11:50:19 +0000) are available in the git repository at: git://git.kraxel.org/qemu tags/pull-gtk-3 for you to fetch changes up to 2bda66028b4962c36d4eabe2995edab12df93691: gtk: Don't warp absolute pointer (2014-03-17 14:34:28 +0100) ---------------------------------------------------------------- gtk: warp bugfixes. gtk: Allow to activate grab-on-hover from the command line ---------------------------------------------------------------- Cole Robinson (2): gtk: Fix mouse warping with gtk3 gtk: Don't warp absolute pointer Jan Kiszka (1): gtk: Allow to activate grab-on-hover from the command line include/ui/console.h | 2 +- qemu-options.hx | 5 +++++ ui/gtk.c | 15 +++++++++++++-- vl.c | 24 +++++++++++++++++++++++- 4 files changed, 42 insertions(+), 4 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line 2014-03-17 13:39 [Qemu-devel] [PULL 0/3] gtk fixes Gerd Hoffmann @ 2014-03-17 13:39 ` Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 2/3] gtk: Fix mouse warping with gtk3 Gerd Hoffmann ` (2 subsequent siblings) 3 siblings, 0 replies; 6+ messages in thread From: Gerd Hoffmann @ 2014-03-17 13:39 UTC (permalink / raw) To: qemu-devel; +Cc: Jan Kiszka, Gerd Hoffmann, Anthony Liguori From: Jan Kiszka <jan.kiszka@siemens.com> As long as we have no persistent GTK configuration, this allows to enable the useful grab-on-hover feature already when starting the VM. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> [ kraxel: fix warning with CONFIG_GTK=n ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- include/ui/console.h | 2 +- qemu-options.hx | 5 +++++ ui/gtk.c | 5 ++++- vl.c | 24 +++++++++++++++++++++++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 08a38ea..8a86617 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -345,6 +345,6 @@ int index_from_key(const char *key); /* gtk.c */ void early_gtk_display_init(void); -void gtk_display_init(DisplayState *ds, bool full_screen); +void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover); #endif diff --git a/qemu-options.hx b/qemu-options.hx index 068da2d..ee5437b 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -810,6 +810,7 @@ ETEXI DEF("display", HAS_ARG, QEMU_OPTION_display, "-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]\n" " [,window_close=on|off]|curses|none|\n" + " gtk[,grab_on_hover=on|off]|\n" " vnc=<display>[,<optargs>]\n" " select display type\n", QEMU_ARCH_ALL) STEXI @@ -833,6 +834,10 @@ graphics card, but its output will not be displayed to the QEMU user. This option differs from the -nographic option in that it only affects what is done with video output; -nographic also changes the destination of the serial and parallel port data. +@item gtk +Display video output in a GTK window. This interface provides drop-down +menus and other UI elements to configure and control the VM during +runtime. @item vnc Start a VNC server on display <arg> @end table diff --git a/ui/gtk.c b/ui/gtk.c index c3ac448..016804d 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1438,7 +1438,7 @@ static const DisplayChangeListenerOps dcl_ops = { .dpy_cursor_define = gd_cursor_define, }; -void gtk_display_init(DisplayState *ds, bool full_screen) +void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover) { GtkDisplayState *s = g_malloc0(sizeof(*s)); char *filename; @@ -1517,6 +1517,9 @@ void gtk_display_init(DisplayState *ds, bool full_screen) if (full_screen) { gtk_menu_item_activate(GTK_MENU_ITEM(s->full_screen_item)); } + if (grab_on_hover) { + gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_on_hover_item)); + } register_displaychangelistener(&s->dcl); diff --git a/vl.c b/vl.c index 842e897..1feb0ff 100644 --- a/vl.c +++ b/vl.c @@ -143,6 +143,9 @@ int vga_interface_type = VGA_NONE; static int full_screen = 0; static int no_frame = 0; int no_quit = 0; +#ifdef CONFIG_GTK +static bool grab_on_hover; +#endif CharDriverState *serial_hds[MAX_SERIAL_PORTS]; CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; CharDriverState *virtcon_hds[MAX_VIRTIO_CONSOLES]; @@ -2276,6 +2279,25 @@ static DisplayType select_display(const char *p) } else if (strstart(p, "gtk", &opts)) { #ifdef CONFIG_GTK display = DT_GTK; + while (*opts) { + const char *nextopt; + + if (strstart(opts, ",grab_on_hover=", &nextopt)) { + opts = nextopt; + if (strstart(opts, "on", &nextopt)) { + grab_on_hover = true; + } else if (strstart(opts, "off", &nextopt)) { + grab_on_hover = false; + } else { + goto invalid_gtk_args; + } + } else { + invalid_gtk_args: + fprintf(stderr, "Invalid GTK option string: %s\n", p); + exit(1); + } + opts = nextopt; + } #else fprintf(stderr, "GTK support is disabled\n"); exit(1); @@ -4399,7 +4421,7 @@ int main(int argc, char **argv, char **envp) #endif #if defined(CONFIG_GTK) case DT_GTK: - gtk_display_init(ds, full_screen); + gtk_display_init(ds, full_screen, grab_on_hover); break; #endif default: -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 2/3] gtk: Fix mouse warping with gtk3 2014-03-17 13:39 [Qemu-devel] [PULL 0/3] gtk fixes Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line Gerd Hoffmann @ 2014-03-17 13:39 ` Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 3/3] gtk: Don't warp absolute pointer Gerd Hoffmann 2014-03-17 16:15 ` [Qemu-devel] [PULL 0/3] gtk fixes Peter Maydell 3 siblings, 0 replies; 6+ messages in thread From: Gerd Hoffmann @ 2014-03-17 13:39 UTC (permalink / raw) To: qemu-devel; +Cc: Gerd Hoffmann, Anthony Liguori, Cole Robinson From: Cole Robinson <crobinso@redhat.com> We were using the wrong coordinates, this fixes things to match the original gtk2 implementation. You can see this error in action by using -vga qxl, however even after this patch the mouse warps in small increments up and to the left, -7x and -3y pixels at a time, until the pointer is warped off the widget. I think it's a qxl bug, but the next patch covers it up. Signed-off-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- ui/gtk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/gtk.c b/ui/gtk.c index 016804d..e2394ac 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -346,7 +346,7 @@ static void gd_mouse_set(DisplayChangeListener *dcl, x, y, &x_root, &y_root); gdk_device_warp(gdk_device_manager_get_client_pointer(mgr), gtk_widget_get_screen(s->drawing_area), - x, y); + x_root, y_root); } #else static void gd_mouse_set(DisplayChangeListener *dcl, -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 3/3] gtk: Don't warp absolute pointer 2014-03-17 13:39 [Qemu-devel] [PULL 0/3] gtk fixes Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 2/3] gtk: Fix mouse warping with gtk3 Gerd Hoffmann @ 2014-03-17 13:39 ` Gerd Hoffmann 2014-03-17 16:15 ` [Qemu-devel] [PULL 0/3] gtk fixes Peter Maydell 3 siblings, 0 replies; 6+ messages in thread From: Gerd Hoffmann @ 2014-03-17 13:39 UTC (permalink / raw) To: qemu-devel; +Cc: Gerd Hoffmann, Anthony Liguori, Cole Robinson From: Cole Robinson <crobinso@redhat.com> This matches the behavior of SDL, and makes the mouse usable when using -display gtk -vga qxl https://bugzilla.redhat.com/show_bug.cgi?id=1051724 Signed-off-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- ui/gtk.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ui/gtk.c b/ui/gtk.c index e2394ac..baabf86 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -340,6 +340,10 @@ static void gd_mouse_set(DisplayChangeListener *dcl, GdkDeviceManager *mgr; gint x_root, y_root; + if (qemu_input_is_absolute()) { + return; + } + dpy = gtk_widget_get_display(s->drawing_area); mgr = gdk_display_get_device_manager(dpy); gdk_window_get_root_coords(gtk_widget_get_window(s->drawing_area), @@ -355,6 +359,10 @@ static void gd_mouse_set(DisplayChangeListener *dcl, GtkDisplayState *s = container_of(dcl, GtkDisplayState, dcl); gint x_root, y_root; + if (qemu_input_is_absolute()) { + return; + } + gdk_window_get_root_coords(gtk_widget_get_window(s->drawing_area), x, y, &x_root, &y_root); gdk_display_warp_pointer(gtk_widget_get_display(s->drawing_area), -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PULL 0/3] gtk fixes. 2014-03-17 13:39 [Qemu-devel] [PULL 0/3] gtk fixes Gerd Hoffmann ` (2 preceding siblings ...) 2014-03-17 13:39 ` [Qemu-devel] [PULL 3/3] gtk: Don't warp absolute pointer Gerd Hoffmann @ 2014-03-17 16:15 ` Peter Maydell 3 siblings, 0 replies; 6+ messages in thread From: Peter Maydell @ 2014-03-17 16:15 UTC (permalink / raw) To: Gerd Hoffmann; +Cc: QEMU Developers On 17 March 2014 13:39, Gerd Hoffmann <kraxel@redhat.com> wrote: > Hi, > > gtk pull third round, with buildfix applied to patch #1. > > please pull, > Gerd > > The following changes since commit f4b11eee2f562c23b3efc33b96ba4542c9ca81aa: > > Makefile: Fix "make clean" (2014-03-17 11:50:19 +0000) > > are available in the git repository at: > > git://git.kraxel.org/qemu tags/pull-gtk-3 > > for you to fetch changes up to 2bda66028b4962c36d4eabe2995edab12df93691: > > gtk: Don't warp absolute pointer (2014-03-17 14:34:28 +0100) > Applied, thanks. -- PMM ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 0/3] gtk fixes. @ 2014-03-14 9:53 Gerd Hoffmann 2014-03-14 9:53 ` [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line Gerd Hoffmann 0 siblings, 1 reply; 6+ messages in thread From: Gerd Hoffmann @ 2014-03-14 9:53 UTC (permalink / raw) To: qemu-devel; +Cc: Gerd Hoffmann Hi, gtk pull second round, this time a bit shorter as I've dropped the cleanup patches. Lesson learned: getting them right so we still build on all supported gtk2+3 versions isn't that easy. There is no reason to rush them, so lets sort that after 2.0 is out of the door. please pull, Gerd The following changes since commit 5d92c74f8a1728a202ba9457872ab0f27ff15e81: Update version for v2.0-rc0 (2014-03-13 20:08:15 -0700) are available in the git repository at: git://git.kraxel.org/qemu tags/pull-gtk-2 for you to fetch changes up to 67f7b5f60e38020e889de2cc0052d42756d3559c: gtk: Don't warp absolute pointer (2014-03-14 10:42:51 +0100) ---------------------------------------------------------------- gtk: two pointer warp bugfixes. gtk: Allow to activate grab-on-hover from the command line ---------------------------------------------------------------- Cole Robinson (2): gtk: Fix mouse warping with gtk3 gtk: Don't warp absolute pointer Jan Kiszka (1): gtk: Allow to activate grab-on-hover from the command line include/ui/console.h | 2 +- qemu-options.hx | 5 +++++ ui/gtk.c | 15 +++++++++++++-- vl.c | 22 +++++++++++++++++++++- 4 files changed, 40 insertions(+), 4 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line 2014-03-14 9:53 Gerd Hoffmann @ 2014-03-14 9:53 ` Gerd Hoffmann 0 siblings, 0 replies; 6+ messages in thread From: Gerd Hoffmann @ 2014-03-14 9:53 UTC (permalink / raw) To: qemu-devel; +Cc: Jan Kiszka, Gerd Hoffmann, Anthony Liguori From: Jan Kiszka <jan.kiszka@siemens.com> As long as we have no persistent GTK configuration, this allows to enable the useful grab-on-hover feature already when starting the VM. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- include/ui/console.h | 2 +- qemu-options.hx | 5 +++++ ui/gtk.c | 5 ++++- vl.c | 22 +++++++++++++++++++++- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 08a38ea..8a86617 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -345,6 +345,6 @@ int index_from_key(const char *key); /* gtk.c */ void early_gtk_display_init(void); -void gtk_display_init(DisplayState *ds, bool full_screen); +void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover); #endif diff --git a/qemu-options.hx b/qemu-options.hx index 068da2d..ee5437b 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -810,6 +810,7 @@ ETEXI DEF("display", HAS_ARG, QEMU_OPTION_display, "-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]\n" " [,window_close=on|off]|curses|none|\n" + " gtk[,grab_on_hover=on|off]|\n" " vnc=<display>[,<optargs>]\n" " select display type\n", QEMU_ARCH_ALL) STEXI @@ -833,6 +834,10 @@ graphics card, but its output will not be displayed to the QEMU user. This option differs from the -nographic option in that it only affects what is done with video output; -nographic also changes the destination of the serial and parallel port data. +@item gtk +Display video output in a GTK window. This interface provides drop-down +menus and other UI elements to configure and control the VM during +runtime. @item vnc Start a VNC server on display <arg> @end table diff --git a/ui/gtk.c b/ui/gtk.c index c3ac448..016804d 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1438,7 +1438,7 @@ static const DisplayChangeListenerOps dcl_ops = { .dpy_cursor_define = gd_cursor_define, }; -void gtk_display_init(DisplayState *ds, bool full_screen) +void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover) { GtkDisplayState *s = g_malloc0(sizeof(*s)); char *filename; @@ -1517,6 +1517,9 @@ void gtk_display_init(DisplayState *ds, bool full_screen) if (full_screen) { gtk_menu_item_activate(GTK_MENU_ITEM(s->full_screen_item)); } + if (grab_on_hover) { + gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_on_hover_item)); + } register_displaychangelistener(&s->dcl); diff --git a/vl.c b/vl.c index 842e897..3191efd 100644 --- a/vl.c +++ b/vl.c @@ -143,6 +143,7 @@ int vga_interface_type = VGA_NONE; static int full_screen = 0; static int no_frame = 0; int no_quit = 0; +static bool grab_on_hover; CharDriverState *serial_hds[MAX_SERIAL_PORTS]; CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; CharDriverState *virtcon_hds[MAX_VIRTIO_CONSOLES]; @@ -2276,6 +2277,25 @@ static DisplayType select_display(const char *p) } else if (strstart(p, "gtk", &opts)) { #ifdef CONFIG_GTK display = DT_GTK; + while (*opts) { + const char *nextopt; + + if (strstart(opts, ",grab_on_hover=", &nextopt)) { + opts = nextopt; + if (strstart(opts, "on", &nextopt)) { + grab_on_hover = true; + } else if (strstart(opts, "off", &nextopt)) { + grab_on_hover = false; + } else { + goto invalid_gtk_args; + } + } else { + invalid_gtk_args: + fprintf(stderr, "Invalid GTK option string: %s\n", p); + exit(1); + } + opts = nextopt; + } #else fprintf(stderr, "GTK support is disabled\n"); exit(1); @@ -4399,7 +4419,7 @@ int main(int argc, char **argv, char **envp) #endif #if defined(CONFIG_GTK) case DT_GTK: - gtk_display_init(ds, full_screen); + gtk_display_init(ds, full_screen, grab_on_hover); break; #endif default: -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-03-17 16:15 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-03-17 13:39 [Qemu-devel] [PULL 0/3] gtk fixes Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 2/3] gtk: Fix mouse warping with gtk3 Gerd Hoffmann 2014-03-17 13:39 ` [Qemu-devel] [PULL 3/3] gtk: Don't warp absolute pointer Gerd Hoffmann 2014-03-17 16:15 ` [Qemu-devel] [PULL 0/3] gtk fixes Peter Maydell -- strict thread matches above, loose matches on Subject: below -- 2014-03-14 9:53 Gerd Hoffmann 2014-03-14 9:53 ` [Qemu-devel] [PULL 1/3] gtk: Allow to activate grab-on-hover from the command line Gerd Hoffmann
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).