Commit graph

235 commits

Author SHA1 Message Date
Mykyta Holubakha
976e48d79f Initial work on window events 2016-07-21 21:51:20 +03:00
Drew DeVault
095353d91d Remove arrange_windows from post-render
Fixes #741
2016-07-21 08:27:25 -04:00
Drew DeVault
2530f952c9 Fix clang warning 2016-07-17 12:59:39 -04:00
Drew DeVault
6d971af5c3 Turn swaybg into a shell surface 2016-07-17 11:55:05 -04:00
D.B
ad7605675e refactor swayc_tabbed_stacked_parent into _ancestor and _parent and use where needed 2016-07-16 15:34:43 +02:00
David Eklov
5c4f52f953 Set panels' geometries correctly and don't render them explicitly
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-14 17:18:01 -05:00
David Eklov
4bb45abc46 Don't treat backgrounds as shell surfaces
This code had some issues. Remove it now so that we can start clean and fix
it later.
2016-07-14 17:15:31 -05:00
Mykyta Holubakha
c503bf1342 Suspend destruction of wss when creating views 2016-07-15 00:22:53 +03:00
Mykyta Holubakha
a2bb280172 Spawn new views to target ws's focused container 2016-07-15 00:22:53 +03:00
D.B
ee67cd0ba1 Fix tabbed/stacked corner case #742
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-07 22:28:57 +02:00
David Eklov
51204b33c1 Enable backgrounds and panels to be shell surfaces
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-04 21:58:07 -05:00
Zandr Martin
2f54057623
I think this fixes #678 2016-07-04 17:45:37 -05:00
Drew DeVault
7144fb9fc3 Spawn windows as floating if they have a parent
Fixes #604
2016-06-30 08:30:03 -04:00
Mykyta Holubakha
bfdda1505e Check if found ws is focused in new view handler
Fixes #714, by preventing change of focus from a window to the whole ws
2016-06-21 20:38:06 +03:00
Zandr Martin
beaa03344e
clean up pid/workspace stuff 2016-06-11 09:20:09 -05:00
Zandr Martin
03d79b41c7
semi-working (only non-client/server wayland apps) 2016-06-10 06:08:59 -05:00
Zandr Martin
0f1859ed25 messy, unfinished version 2016-06-06 06:58:53 -05:00
Denis Doria
f1d5b89d3e Initial work for floating view with sane values 2016-05-31 14:59:33 +02:00
Mykyta Holubakha
e73dde3b10 Support floating_scroll sideways 2016-05-14 23:42:02 +03:00
Mykyta Holubakha
0c495eecde Remove FSB_GAPS_INNER and FSB_GAPS_OUTER 2016-05-08 17:17:35 +03:00
Mykyta Holubakha
0423c41a0f Implemented configurable floating scroll behavior 2016-05-07 20:49:51 +03:00
Mikkel Oscar Lyderik
ae5164f1d4 Update view title of tabbed/stacked windows
Requires Cloudef/wlc@80bf003

Fix #623
2016-05-01 22:08:46 +02:00
Mikkel Oscar Lyderik
f39034a55f Use correct format string for x86_64 and i686
Fix #587
2016-04-17 16:51:33 +02:00
Mikkel Oscar Lyderik
a7f26939c2 Only update geometry of single floating view 2016-04-09 22:51:41 +02:00
Eric Engestrom
3e8081514d Fix spelling mistakes 2016-04-02 16:00:05 +01:00
Drew DeVault
655b003062 Fix pointer scroll thing 2016-03-30 09:24:51 -04:00
Drew DeVault
a4bf09f142 Remove leftover comment 2016-03-30 08:36:25 -04:00
Drew DeVault
a12850444d New feature: adjust gaps with floating_mod+scroll
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-30 08:34:32 -04:00
Mikkel Oscar Lyderik
0af55539a8 Fix borders with floating windows 2016-03-30 10:09:08 +02:00
Mikkel Oscar Lyderik
5a13cb0ed1 Implement borders
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-30 00:47:58 +02:00
Drew DeVault
b903f7f655 Implement some more on borders
Note that this segfaults ALL THE TIME in wlc code. Paging @Cloudef for
help, I'm at a loss.
2016-03-30 00:47:58 +02:00
Drew DeVault
4611bba3db Initial setup of window border rendering
Please don't complain to me about the performance of this
2016-03-30 00:47:58 +02:00
Drew DeVault
5c85c018b4 Update to new WLC API 2016-03-24 14:08:53 -04:00
Mikkel Oscar Lyderik
bb32cba795 Make key handling less strict
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-19 14:06:46 +01:00
Mikkel Oscar Lyderik
f63512480c Remove unused panel_size (and fix rearrange)
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-17 23:47:42 +01:00
Mikkel Oscar Lyderik
1349a44171 Revert "Render outputs as soon as wlc is ready"
This reverts commit 96458bf63c.
2016-03-17 12:05:32 +01:00
Mikkel Oscar Lyderik
96458bf63c Render outputs as soon as wlc is ready
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-03-13 17:13:30 +01:00
Mikkel Oscar Lyderik
c9d9dd7516 Check for empty ws on view destroyed.
In some cases destroying a view can result in an empty and inactive
workspace, which should be destroyed.

This handles those cases.
2016-02-25 13:36:25 +01:00
Mikkel Oscar Lyderik
6f7cbf2eac Replace deprecated function wlc_output_get_pixels.
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-08 12:39:07 +01:00
Drew DeVault
4546ce1188 Add wlc-render.h to handlers.c 2016-02-08 12:20:24 +01:00
Drew DeVault
ef407559e2 Add new wlc thing to views 2016-01-23 16:35:39 -05:00
Cole Mickens
28081b7689 libinput 2016-01-19 06:51:36 -08:00
Mikkel Oscar Lyderik
f8b260d4a1 Add support for bincode command
If a bindsym and bincode maps to the same combination, the last one will
overwrite any previous mappings.
2016-01-09 18:07:47 +01:00
Mikkel Oscar Lyderik
15cbc53a77 Make IPC binding event support a compile time opt. 2016-01-08 15:03:25 +01:00
Mikkel Oscar Lyderik
14147ac056 Reduce duplicate code 2016-01-08 14:27:41 +01:00
Mikkel Oscar Lyderik
6392abe35b Implement IPC binding event (keyboard)
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-08 03:03:55 +01:00
Mikkel Oscar Lyderik
55f63935ab Implement bindsym --release
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-07 21:43:00 +01:00
Drew DeVault
8f5de70c93 Merge pull request #434 from mikkeloscar/detect-modifier
Send IPC modifier event on bar_modifier up/down
2016-01-06 07:26:54 -05:00
Mikkel Oscar Lyderik
843e2ad2c1 Only send modifier event once for active modifiers
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`.
2016-01-05 23:18:59 +01:00
Mikkel Oscar Lyderik
c20c63b677 Send IPC modifier event on bar_modifier up/down
Detects when a bar modifier key is pressed/released and sends a modifier
IPC event to any listeners (usually swaybars).

This way a swaybar can listen on the modifier event and hide/show the
bar accordingly (not implemented yet)

The modifier event looks like this:

    {
      "change": "pressed", // or released
      "modifier": "Mod4"
    }
2016-01-05 02:25:56 +01:00