Browse Source

wayland: Adjust the scaled popup position even if the dimensions didn't change

Otherwise, the unscaled position will be sent.
Frank Praznik 3 months ago
parent
commit
5579010b6a
1 changed files with 7 additions and 4 deletions
  1. 7 4
      src/video/wayland/SDL_waylandwindow.c

+ 7 - 4
src/video/wayland/SDL_waylandwindow.c

@@ -1042,18 +1042,21 @@ static void handle_configure_xdg_popup(void *data,
         wind->requested.logical_height = height;
 
         if (wind->scale_to_display) {
-            x = PointToPixel(wind->sdlwindow->parent, x);
-            y = PointToPixel(wind->sdlwindow->parent, y);
             wind->requested.pixel_width = PointToPixel(wind->sdlwindow, width);
             wind->requested.pixel_height = PointToPixel(wind->sdlwindow, height);
         }
     }
 
-    wind->last_configure.width = width;
-    wind->last_configure.height = height;
+    if (wind->scale_to_display) {
+        x = PointToPixel(wind->sdlwindow->parent, x);
+        y = PointToPixel(wind->sdlwindow->parent, y);
+    }
 
     SDL_SendWindowEvent(wind->sdlwindow, SDL_EVENT_WINDOW_MOVED, x, y);
 
+    wind->last_configure.width = width;
+    wind->last_configure.height = height;
+
     if (wind->shell_surface_status == WAYLAND_SHELL_SURFACE_STATUS_WAITING_FOR_CONFIGURE) {
         wind->shell_surface_status = WAYLAND_SHELL_SURFACE_STATUS_WAITING_FOR_FRAME;
     }