aboutsummaryrefslogtreecommitdiff
path: root/sway/input/cursor.c
AgeCommit message (Collapse)Author
2018-07-28Fix clicking a floating split containerRyan Dwyer
It would focus the split container rather than the child. This commit makes it track the child and the split container separately and send the surface click to the child.
2018-07-28Allow containers to floatRyan Dwyer
Things worth noting: * When a fullscreen view unmaps, the check to unset fullscreen on the workspace has been moved out of view_unmap and into container_destroy, because containers can be fullscreen too * The calls to `container_reap_empty_recursive(workspace)` have been removed from `container_set_floating`. That function reaps upwards so it wouldn't do anything. I'm probably the one who originally added it... * My fix (b14bd1b0b1536039e4f46fe94515c7c44e7afc61) for the tabbed child crash has a side effect where when you close a floating container, focus is not given to the tiled container again. I've removed my fix and removed the call to `send_cursor_motion` from `seat_set_focus_warp`. We should consider calling it from somewhere earlier in the call stack.
2018-07-26Allow containers to be fullscreenRyan Dwyer
2018-07-25Merge pull request #2350 from ppascher/xwayland-optionalDrew DeVault
Added meson option to allow building sway without xwayland support
2018-07-25reverted includes of "sway/config.h" and replaced with "config.h" from meson ↵Pascal Pascher
build
2018-07-25more style fixes, included "sway/config.h" where neededPascal Pascher
2018-07-24Change button var passed to seat_begin_moveBrian Ashworth
2018-07-24Implement floating_modifier <mod> [inverse|normal]Brian Ashworth
2018-07-24style fixes, exclude sway/desctop/xwayland.c when enable_xwayland: falsePascal Pascher
2018-07-24Added meson option "enable_xwayland" (default: true) to enable/disable ↵Pascal Pascher
xwayland support
2018-07-24Fix crash when clicking certain surfacesRyan Dwyer
cont was NULL.
2018-07-24Make mod+resize work in any directionRyan Dwyer
This makes it so if you hold mod and right click on a surface to resize it, the resize direction is chosen based on which quarter of the surface you've clicked. The previous implementation only resized towards the bottom right.
2018-07-23Invoke mouse bindingsfrsfnrrg
The mouse binding logic is inspired/copied from the keyboard binding logic; we store a sorted list of the currently pressed buttons, and trigger a binding when the currently pressed (or just recently pressed, in the case of a release binding) buttons, as well as modifiers/container region, match those of a given binding. As the code to execute a binding is not very keyboard specific, keyboard_execute_command is renamed to seat_execute_command and moved to where the other binding handling functions are. The call to transaction_commit_dirty has been lifted out.
2018-07-24Fix some cases where the cursor doesn't updateRyan Dwyer
cursor_set_image only uploads the named image if it doesn't match the previous named image. This means when setting the cursor image to a surface as given by a client, we have to clear the currently stored image.
2018-07-22Set cursor when beginning resize and move operationsRyan Dwyer
2018-07-22Fix damage when shrinking a floating view using cursorRyan Dwyer
2018-07-22Implement request_move and request_resize for xwayland viewsRyan Dwyer
I discovered we have to send a click event when ending the move or resize operation to make xwayland's requests work correctly.
2018-07-22Fix focus bug with floating containersRyan Dwyer
2018-07-22Consider view's min/max sizes when resizingRyan Dwyer
2018-07-22Store last button and use it when views request to move or resizeRyan Dwyer
2018-07-22Prevent re-uploading the same cursor image multiple timesRyan Dwyer
2018-07-22Replace static handle_end_operation with seat_end_mouse_operationRyan Dwyer
2018-07-22Implement xdg shell request_move and request_resize eventsRyan Dwyer
Also does a few other related things: * Now uses enum wlr_edges instead of our own enum resize_edge * Now uses wlr_xcursor_get_resize_name and removes our own find_resize_edge_name * Renames drag to move for consistency
2018-07-22Use wlr_keyboard_get_modifiersRyan Dwyer
2018-07-22Use separate function for choosing edge cursorRyan Dwyer
2018-07-22Fix clicking xwayland menusRyan Dwyer
2018-07-22Use max multiplier when resizing while preserving ratioRyan Dwyer
2018-07-22Make mod + resize do it from the top left cornerRyan Dwyer
2018-07-22Use WLR_MODIFIER_SHIFTRyan Dwyer
2018-07-22Implement floating_modifier and mouse operations for floating viewsRyan Dwyer
This implements the following: * `floating_modifier` configuration directive * Drag a floating window by its title bar * Hold mod + drag a floating window from anywhere * Resize a floating view by dragging the border * Resize a floating view by holding mod and right clicking anywhere on the view * Resize a floating view and keep aspect ratio by holding shift while resizing using either method * Mouse cursor turns into resize when hovering floating border or corner
2018-07-19Fix crash and render issues involving cursor_send_pointer_motionRyan Dwyer
Fixes #2303, as well as a crash. To replicate the crash: * Have multiple outputs * In config: for_window [<criteria>] workspace foo * Also in config: workspace foo output <left-output-name> * Focus the right output, and ensure workspace foo doesn't exist * Launch the app that triggers the criteria When the view maps, it calls workspace_switch which calls send_set_focus which calls cursor_send_pointer_motion which calls transaction_commit_dirty. This call to transaction_commit_dirty is not meant to happen at this time because the tree isn't guaranteed to be in a consistent state, but I'm not sure how exactly this leads to the crash or render issues. In this case the transaction is already committed by the view implementation's handle_map function. So the solution is to remove it from cursor_send_pointer_motion and add it to the other functions in cursor.c which call cursor_send_pointer_motion.
2018-07-15Make focus part of transactionsRyan Dwyer
Rather than maintain copies of the entire focus stack, this PR transactionises the focus by introducing two new properties to the container state and using those when rendering. * `bool focused` means this container has actual focus. Only one container should have this equalling true in its current state. * `struct sway_container *focus_inactive_child` points to the immediate child that was most recently focused (eg. for tabbed and stacked containers).
2018-07-09Update for swaywm/wlroots#1126emersion
2018-07-05Fix pointer button events for layer surfacesBrian Ashworth
2018-06-24dont focus-follow-mouse when keyboard grabTony Crisci
2018-06-09Render drag iconsemersion
2018-06-06Initialise previous cursor position.Scott Leggett
Fix the problem with focus jumping to the container under the cursor when first starting sway.
2018-06-04Don't set focus to NULL when clicking a surface which has no containerRyan Dwyer
2018-06-01Store swayc coordinates as layout-localRyan Dwyer
2018-06-01Implement floatingRyan Dwyer
2018-05-28Improve comment.Scott Leggett
2018-05-28Avoid assert on container type.Scott Leggett
2018-05-28Move previous cursor_position inline.Scott Leggett
2018-05-28Simplify logic, remove redundant variables.Scott Leggett
2018-05-28Rely on view_is_visible rather thank walking the tree ourselves.Scott Leggett
2018-05-28Store previous position in sway_cursor.Scott Leggett
2018-05-27Focus containers only on entry.Scott Leggett
2018-05-26Replace oft-failing abort with if statementDrew DeVault
Fixes #2045
2018-05-26Check for next_focus before assertIvan Chebykin
2018-05-26Fix usage of sway_assertIvan Chebykin