mirror of
https://github.com/swaywm/sway
synced 2024-05-09 15:56:14 +02:00
Compare commits
5 Commits
05b1adf7c0
...
6a34d13217
Author | SHA1 | Date | |
---|---|---|---|
dmorilha | 6a34d13217 | ||
Kenny Levinsen | 646019cad9 | ||
Kenny Levinsen | ffcde7a70c | ||
dmorilha | a90a2902cf | ||
dmorilha | de69105576 |
|
@ -775,16 +775,20 @@ static struct cmd_results *cmd_move_in_direction(
|
|||
}
|
||||
|
||||
static struct cmd_results *cmd_move_to_position_pointer(
|
||||
struct sway_container *container) {
|
||||
struct sway_container *container, bool next) {
|
||||
struct sway_seat *seat = config->handler_context.seat;
|
||||
if (!seat->cursor) {
|
||||
return cmd_results_new(CMD_FAILURE, "No cursor device");
|
||||
}
|
||||
struct wlr_cursor *cursor = seat->cursor->cursor;
|
||||
/* Determine where to put the window. */
|
||||
double lx = cursor->x - container->pending.width / 2;
|
||||
double ly = cursor->y - container->pending.height / 2;
|
||||
|
||||
double lx = cursor->x;
|
||||
double ly = cursor->y;
|
||||
if (!next) {
|
||||
lx -= container->pending.width / 2;
|
||||
ly -= container->pending.height / 2;
|
||||
}
|
||||
|
||||
/* Correct target coordinates to be in bounds (on screen). */
|
||||
struct wlr_output *output = wlr_output_layout_output_at(
|
||||
root->output_layout, cursor->x, cursor->y);
|
||||
|
@ -809,7 +813,7 @@ static struct cmd_results *cmd_move_to_position_pointer(
|
|||
static const char expected_position_syntax[] =
|
||||
"Expected 'move [absolute] position <x> [px] <y> [px]' or "
|
||||
"'move [absolute] position center' or "
|
||||
"'move position cursor|mouse|pointer'";
|
||||
"'move position [next] cursor|mouse|pointer'";
|
||||
|
||||
static struct cmd_results *cmd_move_to_position(int argc, char **argv) {
|
||||
struct sway_container *container = config->handler_context.container;
|
||||
|
@ -838,13 +842,23 @@ static struct cmd_results *cmd_move_to_position(int argc, char **argv) {
|
|||
if (!argc) {
|
||||
return cmd_results_new(CMD_INVALID, "%s", expected_position_syntax);
|
||||
}
|
||||
|
||||
bool next = false;
|
||||
if (strcmp(argv[0], "next") == 0) {
|
||||
next = true;
|
||||
--argc;
|
||||
++argv;
|
||||
}
|
||||
if (strcmp(argv[0], "cursor") == 0 || strcmp(argv[0], "mouse") == 0 ||
|
||||
strcmp(argv[0], "pointer") == 0) {
|
||||
if (absolute) {
|
||||
return cmd_results_new(CMD_INVALID, "%s", expected_position_syntax);
|
||||
}
|
||||
return cmd_move_to_position_pointer(container);
|
||||
} else if (strcmp(argv[0], "center") == 0) {
|
||||
return cmd_move_to_position_pointer(container, next);
|
||||
} else if (next) {
|
||||
return cmd_results_new(CMD_INVALID, "%s", expected_position_syntax);
|
||||
}
|
||||
if (strcmp(argv[0], "center") == 0) {
|
||||
double lx, ly;
|
||||
if (absolute) {
|
||||
lx = root->x + (root->width - container->pending.width) / 2;
|
||||
|
|
|
@ -619,7 +619,7 @@ static void output_manager_apply(struct sway_server *server,
|
|||
if (!test_only && ok) {
|
||||
struct wlr_output_configuration_head_v1 *config_head;
|
||||
wl_list_for_each(config_head, &config->heads, link) {
|
||||
if (config_head->state.output == sway_output->wlr_output) {
|
||||
if (config_head->state.output == cfg->output->wlr_output) {
|
||||
store_config = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -240,13 +240,12 @@ bool server_init(struct sway_server *server) {
|
|||
|
||||
wlr_renderer_init_wl_shm(server->renderer, server->wl_display);
|
||||
|
||||
if (wlr_renderer_get_dmabuf_texture_formats(server->renderer) != NULL) {
|
||||
if (wlr_renderer_get_texture_formats(server->renderer, WLR_BUFFER_CAP_DMABUF) != NULL) {
|
||||
server->linux_dmabuf_v1 = wlr_linux_dmabuf_v1_create_with_renderer(
|
||||
server->wl_display, 4, server->renderer);
|
||||
}
|
||||
if (wlr_renderer_get_dmabuf_texture_formats(server->renderer) != NULL &&
|
||||
debug.legacy_wl_drm) {
|
||||
wlr_drm_create(server->wl_display, server->renderer);
|
||||
if (debug.legacy_wl_drm) {
|
||||
wlr_drm_create(server->wl_display, server->renderer);
|
||||
}
|
||||
}
|
||||
|
||||
server->allocator = wlr_allocator_autocreate(server->backend,
|
||||
|
|
|
@ -230,8 +230,9 @@ set|plus|minus|toggle <amount>
|
|||
Moves the focused container to be centered on the workspace. If _absolute_
|
||||
is used, it is moved to the center of all outputs.
|
||||
|
||||
*move* position cursor|mouse|pointer
|
||||
Moves the focused container to be centered on the cursor.
|
||||
*move* position [next] cursor|mouse|pointer
|
||||
Moves the focused container to be centered on the cursor. If _next_ is
|
||||
used, it moves the left upper corner to the cursor's position.
|
||||
|
||||
*move* [container|window] [to] mark <mark>
|
||||
Moves the focused container to the specified mark.
|
||||
|
|
Loading…
Reference in New Issue