mirror of
https://github.com/labwc/labwc.git
synced 2025-11-02 09:01:47 -05:00
view: fix view_get_adjacent_output() bug
...when using more than two outputs. Use the centre of the view's output as the reference coordinate when seeking adjacent outputs. Fixes: #1582
This commit is contained in:
parent
1ea7e8b494
commit
7e338fc365
1 changed files with 8 additions and 4 deletions
12
src/view.c
12
src/view.c
|
|
@ -1530,6 +1530,10 @@ view_get_adjacent_output(struct view *view, enum view_edge edge)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct wlr_box box = output_usable_area_in_layout_coords(view->output);
|
||||||
|
int lx = box.x + box.width / 2;
|
||||||
|
int ly = box.y + box.height / 2;
|
||||||
|
|
||||||
/* Determine any adjacent output in the appropriate direction */
|
/* Determine any adjacent output in the appropriate direction */
|
||||||
struct wlr_output *new_output = NULL;
|
struct wlr_output *new_output = NULL;
|
||||||
struct wlr_output *current_output = output->wlr_output;
|
struct wlr_output *current_output = output->wlr_output;
|
||||||
|
|
@ -1537,19 +1541,19 @@ view_get_adjacent_output(struct view *view, enum view_edge edge)
|
||||||
switch (edge) {
|
switch (edge) {
|
||||||
case VIEW_EDGE_LEFT:
|
case VIEW_EDGE_LEFT:
|
||||||
new_output = wlr_output_layout_adjacent_output(
|
new_output = wlr_output_layout_adjacent_output(
|
||||||
layout, WLR_DIRECTION_LEFT, current_output, 1, 0);
|
layout, WLR_DIRECTION_LEFT, current_output, lx, ly);
|
||||||
break;
|
break;
|
||||||
case VIEW_EDGE_RIGHT:
|
case VIEW_EDGE_RIGHT:
|
||||||
new_output = wlr_output_layout_adjacent_output(
|
new_output = wlr_output_layout_adjacent_output(
|
||||||
layout, WLR_DIRECTION_RIGHT, current_output, 1, 0);
|
layout, WLR_DIRECTION_RIGHT, current_output, lx, ly);
|
||||||
break;
|
break;
|
||||||
case VIEW_EDGE_UP:
|
case VIEW_EDGE_UP:
|
||||||
new_output = wlr_output_layout_adjacent_output(
|
new_output = wlr_output_layout_adjacent_output(
|
||||||
layout, WLR_DIRECTION_UP, current_output, 0, 1);
|
layout, WLR_DIRECTION_UP, current_output, lx, ly);
|
||||||
break;
|
break;
|
||||||
case VIEW_EDGE_DOWN:
|
case VIEW_EDGE_DOWN:
|
||||||
new_output = wlr_output_layout_adjacent_output(
|
new_output = wlr_output_layout_adjacent_output(
|
||||||
layout, WLR_DIRECTION_DOWN, current_output, 0, 1);
|
layout, WLR_DIRECTION_DOWN, current_output, lx, ly);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue