mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-23 10:29:49 +01:00
data-device: fix drag icon position
This commit is contained in:
parent
b7c622a319
commit
c00a94ca76
3 changed files with 8 additions and 4 deletions
|
@ -75,6 +75,9 @@ struct roots_drag_icon {
|
|||
struct wl_list link; // roots_input::drag_icons
|
||||
bool mapped;
|
||||
|
||||
int32_t sx;
|
||||
int32_t sy;
|
||||
|
||||
struct wl_listener surface_destroy;
|
||||
struct wl_listener surface_commit;
|
||||
};
|
||||
|
|
|
@ -313,6 +313,9 @@ static void handle_drag_icon_commit(struct wl_listener *listener, void *data) {
|
|||
// TODO the spec hints at rules that can determine whether the drag icon is
|
||||
// mapped here, but it is not completely clear so we need to test more
|
||||
// toolkits to see how we should interpret the surface state here.
|
||||
drag_icon->sx += drag_icon->surface->current->sx;
|
||||
drag_icon->sy += drag_icon->surface->current->sy;
|
||||
|
||||
drag_icon->mapped = drag_icon->surface->texture->valid;
|
||||
}
|
||||
|
||||
|
|
|
@ -158,10 +158,8 @@ static void output_frame_notify(struct wl_listener *listener, void *data) {
|
|||
|
||||
struct wlr_surface *icon = drag_icon->surface;
|
||||
struct wlr_cursor *cursor = server->input->cursor;
|
||||
// TODO should also use the hotspot to determine the location, but
|
||||
// hotspot is broken right now.
|
||||
double icon_x = cursor->x - icon->current->sx;
|
||||
double icon_y = cursor->y - icon->current->sy;
|
||||
double icon_x = cursor->x + drag_icon->sx;
|
||||
double icon_y = cursor->y + drag_icon->sy;
|
||||
render_surface(icon, desktop, wlr_output, &now, icon_x, icon_y, 0);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue