aboutsummaryrefslogtreecommitdiff
path: root/sway/handlers.c
AgeCommit message (Collapse)Author
2016-07-23don't passthrough a floating_scroll event to focused windowD.B
2016-07-21Initial work on window eventsMykyta Holubakha
2016-07-21Remove arrange_windows from post-renderDrew DeVault
Fixes #741
2016-07-17Fix clang warningDrew DeVault
2016-07-17Turn swaybg into a shell surfaceDrew DeVault
2016-07-16refactor swayc_tabbed_stacked_parent into _ancestor and _parent and use ↵D.B
where needed
2016-07-14Set panels' geometries correctly and don't render them explicitlyDavid Eklov
Panels were explicitly rendered by calling wlc_surface_render in handle_output_pre_render. Calling wlc_surface_render does not set the surface's geometry (like wlc_view_set_geometry does). Sway did not call wlc_view_set_geometry for panels, so wlc defaulted their geometry to be at the origin. This is not correct for bars unless their location is top. Furthermore, for a surface to receive pointer events, its mask has to be set to visible. This causes wlc to render these surfaces, causing panels and backgrounds to be rendered twice. This commit makes panels and surfaces visible, sets the correct geometries and removes the code that explicitly rendered them.
2016-07-14Don't treat backgrounds as shell surfacesDavid Eklov
This code had some issues. Remove it now so that we can start clean and fix it later.
2016-07-15Suspend destruction of wss when creating viewsMykyta Holubakha
2016-07-15Spawn new views to target ws's focused containerMykyta Holubakha
2016-07-07Fix tabbed/stacked corner case #742D.B
Tabbed/stacked containers are now created only if a view is present on the workspace. If a view is created on previously empty tabbed/stacked workspace, it gets wrapped in a container.
2016-07-04Enable backgrounds and panels to be shell surfacesDavid Eklov
Prior to this commit all windows (e.g. shell surfaces) were handled the same way in handle_view_created. Since backgrounds and panels have to be treated differently, they could not be shell surfaces. This changes checks whether a client is a background or a panel in handle_view_created and exists to let them be dealt with elsewhere.
2016-07-04I think this fixes #678Zandr Martin
2016-06-30Spawn windows as floating if they have a parentDrew DeVault
Fixes #604
2016-06-21Check if found ws is focused in new view handlerMykyta Holubakha
Fixes #714, by preventing change of focus from a window to the whole ws
2016-06-11clean up pid/workspace stuffZandr Martin
2016-06-10semi-working (only non-client/server wayland apps)Zandr Martin
2016-06-06messy, unfinished versionZandr Martin
2016-05-31Initial work for floating view with sane valuesDenis Doria
2016-05-14Support floating_scroll sidewaysMykyta Holubakha
2016-05-08Remove FSB_GAPS_INNER and FSB_GAPS_OUTERMykyta Holubakha
2016-05-07Implemented configurable floating scroll behaviorMykyta Holubakha
2016-05-01Update view title of tabbed/stacked windowsMikkel Oscar Lyderik
Requires Cloudef/wlc@80bf003 Fix #623
2016-04-17Use correct format string for x86_64 and i686Mikkel Oscar Lyderik
Fix #587
2016-04-09Only update geometry of single floating viewMikkel Oscar Lyderik
2016-04-02Fix spelling mistakesEric Engestrom
2016-03-30Fix pointer scroll thingDrew DeVault
2016-03-30Remove leftover commentDrew DeVault
2016-03-30New feature: adjust gaps with floating_mod+scrollDrew DeVault
I made this configurable but I didn't make the command for it. That's left as an exercise to an eager contributor. mod_scroll_behavior [gaps inner|gaps outer] Would merge implementions of more behaviors for mod+scroll, if anyone has some neato ideas.
2016-03-30Fix borders with floating windowsMikkel Oscar Lyderik
2016-03-30Implement bordersMikkel Oscar Lyderik
The borders are implemented as a surface/buffer attached to each view which is sent to and rendered by wlc in the view_pre_render callback. All the drawing logic is handled in sway/border.c and all the logic for calculating the geometry of the border/view is handled in `update_geometry` in sway/layout.c (same place as gaps are calculated).
2016-03-30Implement some more on bordersDrew DeVault
Note that this segfaults ALL THE TIME in wlc code. Paging @Cloudef for help, I'm at a loss.
2016-03-30Initial setup of window border renderingDrew DeVault
Please don't complain to me about the performance of this
2016-03-24Update to new WLC APIDrew DeVault
2016-03-19Make key handling less strictMikkel Oscar Lyderik
Sway has been very strict when it comes to key handling. Only on an exact match would a bindsym be triggered. This patch makes it less strict by for instance allowing the key combo `$mod+1+2` to act as `$mod+2` if 2 was the last pressed key and `$mod+1` if 1 was the last pressed key. The new key handling uses the following algorithm: 1. List of bindings sorted by number of keys in binding (already the default) 2. Find all bindings covered by the current keyboard state and list them by same order as in 1. 3. Select the first binding from the list where the last pressed key is part of the binding. Addresses #452
2016-03-17Remove unused panel_size (and fix rearrange)Mikkel Oscar Lyderik
desktop_shell.panel_size was only used to determine if sway should rearrange the output when rendering the panel in the output_pre_render hook. This is not needed since the output will have been arranged at that point. It also caused sway to rearrange all the time when running with two or more different monitors/resolutions because panel_size kept changing with every output_pre_render callback. Should fix #514
2016-03-17Revert "Render outputs as soon as wlc is ready"Mikkel Oscar Lyderik
This reverts commit 96458bf63c10a702797a8687e2f73d7814a6b079.
2016-03-13Render outputs as soon as wlc is readyMikkel Oscar Lyderik
This makes sure that the outputs are rendered when sway is launched, so the user doesn't have to move the cursor before the background and bar gets rendered on screen. Fixes #509
2016-02-25Check for empty ws on view destroyed.Mikkel Oscar Lyderik
In some cases destroying a view can result in an empty and inactive workspace, which should be destroyed. This handles those cases.
2016-02-08Replace deprecated function wlc_output_get_pixels.Mikkel Oscar Lyderik
This makes IPC GET_PIXELS use the new `wlc_pixels_read` call instead of the deprecated `wlc_output_get_pixels`. The old version worked by passing a callback function to wlc which would grab the pixels and send them to the IPC client. The new version works by maintaining a list of clients who have requested the pixels of some output and then grap and send the pixels in the output_post_render hook of the `wlc_interface`.
2016-02-08Add wlc-render.h to handlers.cDrew DeVault
2016-01-23Add new wlc thing to viewsDrew DeVault
2016-01-19libinputCole Mickens
2016-01-09Add support for bincode commandMikkel Oscar Lyderik
If a bindsym and bincode maps to the same combination, the last one will overwrite any previous mappings.
2016-01-08Make IPC binding event support a compile time opt.Mikkel Oscar Lyderik
2016-01-08Reduce duplicate codeMikkel Oscar Lyderik
2016-01-08Implement IPC binding event (keyboard)Mikkel Oscar Lyderik
This implements the IPC binding event for keyboard bindings. It is slightly different from the i3 implementation [1] since sway supports more than one non-modifier key in a binding. Thus the json interface has been changed from: { ... "symbol": "t", ... } to: { ... "symbols": [ "t" ], ... } [1] http://i3wm.org/docs/ipc.html#_binding_event
2016-01-07Implement bindsym --releaseMikkel Oscar Lyderik
This is a "simple" version of --release (same as i3) that only supports a binding that contain one normal key. e.g.: bindsym --release $mod+x exec somthing-fun I didn't bother implementing it for a combination like `$mod+x+z` since it is a bit tricky to get right and also a bit weird to actually do on a keyboard.
2016-01-06Merge pull request #434 from mikkeloscar/detect-modifierDrew DeVault
Send IPC modifier event on bar_modifier up/down
2016-01-05Only send modifier event once for active modifiersMikkel Oscar Lyderik
This makes sure that a modifier event is only sent for active bar modifiers, and that it is only sent once for each of those modifiers. An active bar modifier is a modifier defined for a bar with `mode hide` and `hidden_state hide`.