Commit graph

131 commits

Author SHA1 Message Date
Bastien Dejean
16eae53e56 New setting: honor_ewmh_focus 2013-09-23 11:45:00 +02:00
Bastien Dejean
70c6cada07 Make focus_follows_pointer work on empty desktops 2013-09-22 11:16:06 +02:00
Bastien Dejean
1ef4d4fb05 Add comment for focus_in handling 2013-09-20 21:15:42 +02:00
Bastien Dejean
3dda8e7f6f Move a few functions from tree to desktop/monitor 2013-09-20 11:57:09 +02:00
Bastien Dejean
85f67b2164 Remove a few useless header inclusion via deheader 2013-09-19 15:38:22 +02:00
Bastien Dejean
d168e919e3 Split types.c into {monitor,desktop,history}.c 2013-09-19 15:02:49 +02:00
Bastien Dejean
b1d793031b Don't support ICCCM's WM_STATE
It seems that it might cause more harm than good.

E.g.: Skype.
2013-09-19 10:29:19 +02:00
Bastien Dejean
435727c9fa Don't introduce unfounded exceptions 2013-09-18 12:58:09 +02:00
Bastien Dejean
afcbf4795e Consider unmapped windows as withdrawn 2013-09-18 12:38:44 +02:00
Bastien Dejean
2b92f05e34 Focus a monitor with an empty focused desktop 2013-08-29 11:45:50 +02:00
Bastien Dejean
cf85a1d3fb Fix all the warnings produced by clang 2013-08-02 10:47:01 +02:00
Bastien Dejean
72b8431be0 Prevent input focus from being stolen
Example: if one chromium window is opened and a link is opened in
newsbeuter then chromium will steal the input focus (without explicitly
requesting focus via the proper EWMH message).
2013-07-30 14:53:44 +02:00
Bastien Dejean
8f8f5d8ea4 Raise focused floating window via pointer -g focus 2013-07-15 21:18:37 +02:00
Bastien Dejean
44414046b9 Don't raise windows via focus_follows_pointer 2013-07-15 20:28:28 +02:00
Bastien Dejean
1f83706ab5 Don't transplant when swapping
The new syntax provides a separate transplantation option.
2013-07-13 09:40:19 +02:00
Bastien Dejean
8ff7c3ee47 Prevent focus change due to pointer jitter 2013-07-12 22:15:18 +02:00
Bastien Dejean
8fd8521322 Rewrite message handling
The new message syntax:
- Provides 10 commands instead of 60.
- Allows multiple actions to be applied in one call.

The client now returns an non zero exit code when a message fails.

The `is_adjacent` function now handles vacant nodes.
2013-07-12 21:52:02 +02:00
Bastien Dejean
714fb8d504 Remove message: ungrab_pointer
The above message was only needed for ending the `move` pointer action
on a floating window. It rendered the `move` pointer action finicky
because the floating rectangle of the floating windows was not updated
in real time.
2013-07-04 11:04:28 +02:00
Bastien Dejean
addd537eb8 Prevent node transplantation for circulate 2013-07-02 21:33:33 +02:00
Bastien Dejean
0561e9075a Handle _NET_WM_DESKTOP client message 2013-06-30 14:47:54 +02:00
Bastien Dejean
972526f1aa Ignore _NET_ACTIVE_WINDOW for the focused node 2013-06-29 22:11:13 +02:00
Bastien Dejean
525c6409e6 Revert "Don't try to focus the focused node"
This reverts commit 92292f834f.

The `n == mon->desk->focus` appears after remove_node, so we can't
return in this case in `focus_node` after all.
2013-06-29 22:05:51 +02:00
Bastien Dejean
92292f834f Don't try to focus the focused node 2013-06-29 21:45:21 +02:00
Bastien Dejean
30f891fad5 Don't try to import monitors when RandR is off 2013-06-10 13:51:46 +02:00
Bastien Dejean
12403a5081 Handle fullscreen state in apply_layout 2013-06-08 18:31:55 +02:00
Bastien Dejean
b939bd7480 Consider only pointer_follows_monitor exceptions
We'd prefer not to have to clutter `messages.c` with redundant code and
hence we handle the two exceptions instead.
2013-06-08 11:53:48 +02:00
Bastien Dejean
f19cf121d7 Call arrange in transfer_node
Fix a few regressions, and add numerous minor cosmetic improvements.
2013-06-06 23:51:30 +02:00
Bastien Dejean
3b0d482f41 Refactor focus_node and select_*
The select_* and focus_node where initially made independent as to
observe the --follow option. But this is in fact not necessary.
2013-05-29 14:34:27 +02:00
Bastien Dejean
ff9db2a94a Three arguments is enough for focus_node
The fourth argument of `focus_node` was introduced to avoid calling
unneeded functions from `manage_window`: the reason is not good enough
to justify the existence of that extra argument.
2013-05-29 11:36:01 +02:00
Bastien Dejean
38b3f3531a Handle monitors via RandR 2013-05-29 08:35:13 +02:00
Bastien Dejean
402f7d6cf3 Prevent flickering of grab_pointer focus
`stack_tiled` can generate flickering when monocle windows are involved,
so we shall try to avoid triggering it whenever possible.
2013-05-26 22:57:32 +02:00
Bastien Dejean
8e57511b50 Particularize swap_nodes 2013-05-06 11:28:32 +02:00
Bastien Dejean
1f894fe492 Add support for _NET_WM_STATE_DEMANDS_ATTENTION 2013-03-26 11:34:06 +01:00
Bastien Dejean
d18b3917ee Moving tiled windows to empty desktops 2013-03-10 09:55:09 +01:00
Bastien Dejean
5d9eebb463 Move tiled window: don't miss valid cases
When we move a tiled window from one monitor to the other, we don't care
about the state of the window under the pointer.
2013-03-09 20:49:19 +01:00
Bastien Dejean
b1318ee553 Moving a tiled window to another monitor
When we move a tiled window to another monitor via the `move` argument
of the `grab_pointer` message, we shall transfer the related node.
2013-03-09 19:40:47 +01:00
Bastien Dejean
1176b5c369 Lower the motion recorder when querying
The current implementation of `focus_follows_pointer` requires that the
motion recorder be lowered when `xcb_query_pointer` is called,
otherwise, the response will specify the motion recorder as child
attribute.
2013-03-07 21:53:45 +01:00
Bastien Dejean
6057feed61 Generalize swap_nodes
The `swap_nodes` function was not written to handle nodes from different
desktops. We need to be able to do that in order to move tiled windows
across monitors.
2013-03-07 21:34:33 +01:00
Bastien Dejean
829bc9b91f New setting: 'focus_follows_pointer' 2013-03-04 11:25:12 +01:00
Bastien Dejean
0acdab744c Remove setting: 'focus_follows_pointer'
It is impossible to make the feature work in every cases without
unwanted side effects, therefore it will only exists as a branch.
2013-03-04 11:19:24 +01:00
Bastien Dejean
6bfebaaf6b Focus follows pointer rewrite 2013-03-02 19:39:16 +01:00
Bastien Dejean
0f6f533a87 Unify tiled and floating pointer actions
The following 'grab_pointer' arguments are removed: 'move_tiled',
'resize_tiled'. The regular 'move' and 'resize_*' arguments shall be
used instead. The 'fence_grip' parameter is no longer meaningful and
has been removed. Moving and resizing now behaves the same for tiled and
floating windows.
2013-02-28 15:04:14 +01:00
Bastien Dejean
3573089f0d Reuse W 2013-02-28 12:47:29 +01:00
Bastien Dejean
2d860de977 New 'grab_pointer' argument: 'resize_side'
The 'resize' argument is now called 'resize_corner'.
2013-02-28 12:27:26 +01:00
Bastien Dejean
7741295902 Add tiled move/resize pointer actions
New arguments for `grab_pointer`: `{move,resize}_tiled`.
New setting: `fence_grip`.
2013-02-04 14:22:41 +01:00
Bastien Dejean
0494fc8601 Prevent pointer actions on fullscreen windows 2013-01-19 21:41:10 +01:00
Bastien Dejean
d3e351adf6 Revert "Cursor pointer feedbacks for 'grab_pointer'"
This reverts commit e1e04bff2e.
2013-01-12 11:12:17 +01:00
Bastien Dejean
5d3d5c5338 Don't start actions via unmanaged windows 2013-01-10 20:26:00 +01:00
Bastien Dejean
e1e04bff2e Cursor pointer feedbacks for 'grab_pointer' 2013-01-10 17:59:22 +01:00
Bastien Dejean
878bc8b144 Focus follows pointer needs enter notify events
It seems that pointer motion events are not sufficient to enforce
'focus_follows_pointer': some windows grab the pointer and catch those
events (e.g.: *zenity*), preventing *bspwm* from receiving them. So we
need to listen to enter notify events too.
2013-01-09 21:33:19 +01:00