qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3] input: Allow to choose console with qemu_input_is_absolut


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH v3] input: Allow to choose console with qemu_input_is_absolute
Date: Thu, 21 Sep 2023 11:46:36 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.1

On 21/9/23 10:29, Akihiko Odaki wrote:
Although an input is routed depending on the console,
qemu_input_is_absolute() had no mechanism to specify the console.

Accept QemuConsole as an argument for qemu_input_is_absolute, and let
the display know the absolute/relative state for a particular console.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
V2 -> V3: Rebased to commit 55394dcbec8f0c29c30e792c102a0edd50a52bf4
V1 -> V2: Rebased to commit 79b677d658d3d35e1e776826ac4abb28cdce69b8

  include/ui/input.h |  2 +-
  ui/dbus-console.c  |  6 +++---
  ui/gtk.c           | 12 ++++++------
  ui/input.c         | 29 +++++++----------------------
  ui/sdl2.c          | 26 +++++++++++++-------------
  ui/spice-input.c   |  2 +-
  ui/vnc.c           |  2 +-
  ui/cocoa.m         |  2 +-
  ui/trace-events    |  1 -
  9 files changed, 33 insertions(+), 49 deletions(-)


diff --git a/ui/gtk.c b/ui/gtk.c
index e09f97a86b..40b8d27da5 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -204,7 +204,7 @@ static void gd_update_cursor(VirtualConsole *vc)
      }
window = gtk_widget_get_window(GTK_WIDGET(vc->gfx.drawing_area));
-    if (s->full_screen || qemu_input_is_absolute() || s->ptr_owner == vc) {
+    if (s->full_screen || qemu_input_is_absolute(vc->gfx.dcl.con) || 
s->ptr_owner == vc) {
          gdk_window_set_cursor(window, s->null_cursor);
      } else {
          gdk_window_set_cursor(window, NULL);
@@ -453,7 +453,7 @@ static void gd_mouse_set(DisplayChangeListener *dcl,
      gint x_root, y_root;
if (!gtk_widget_get_realized(vc->gfx.drawing_area) ||
-        qemu_input_is_absolute()) {
+        qemu_input_is_absolute(dcl->con)) {

Maybe vc->gfx.dcl.con instead to match with the other uses in this
file? Anyhow,

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

          return;
      }
@@ -689,7 +689,7 @@ static void gd_mouse_mode_change(Notifier *notify, void *data) s = container_of(notify, GtkDisplayState, mouse_mode_notifier);
      /* release the grab at switching to absolute mode */
-    if (qemu_input_is_absolute() && s->ptr_owner) {
+    if (s->ptr_owner && qemu_input_is_absolute(s->ptr_owner->gfx.dcl.con)) {
          if (!s->ptr_owner->window) {
              gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(s->grab_item),
                                             FALSE);
@@ -903,7 +903,7 @@ static gboolean gd_motion_event(GtkWidget *widget, 
GdkEventMotion *motion,
      x = (motion->x - mx) / vc->gfx.scale_x * ws;
      y = (motion->y - my) / vc->gfx.scale_y * ws;
- if (qemu_input_is_absolute()) {
+    if (qemu_input_is_absolute(vc->gfx.dcl.con)) {
          if (x < 0 || y < 0 ||
              x >= surface_width(vc->gfx.ds) ||
              y >= surface_height(vc->gfx.ds)) {
@@ -923,7 +923,7 @@ static gboolean gd_motion_event(GtkWidget *widget, 
GdkEventMotion *motion,
      s->last_y = y;
      s->last_set = TRUE;
- if (!qemu_input_is_absolute() && s->ptr_owner == vc) {
+    if (!qemu_input_is_absolute(vc->gfx.dcl.con) && s->ptr_owner == vc) {
          GdkScreen *screen = gtk_widget_get_screen(vc->gfx.drawing_area);
          GdkDisplay *dpy = gtk_widget_get_display(widget);
          GdkWindow *win = gtk_widget_get_window(widget);
@@ -965,7 +965,7 @@ static gboolean gd_button_event(GtkWidget *widget, 
GdkEventButton *button,
/* implicitly grab the input at the first click in the relative mode */
      if (button->button == 1 && button->type == GDK_BUTTON_PRESS &&
-        !qemu_input_is_absolute() && s->ptr_owner != vc) {
+        !qemu_input_is_absolute(vc->gfx.dcl.con) && s->ptr_owner != vc) {
          if (!vc->window) {
              gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(s->grab_item),
                                             TRUE);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]