| Commit message (Collapse) | Author | Lines |
|
This functionally partly reverts commit db0f56a (Do not warp mouse to
windows marked active by EWMH, 2022-01-17) which introduced a bug where
the pointer would no longer be warped to windows activated by rofi.
Since the window switcher internal to cwm calls client_ptr_warp directly
this was not noticed immediately.
Thankfully the EWMH spec defines a "source indication" [1] in the
_NET_ACTIVE_WINDOW request [2]. This field specifies whether the request
came from a normal application or a pager and "other clients that
represent direct user actions". Window switchers like rofi should honor
this field and therefore it is trivial to fix this bug by checking for
the correct source indication value.
This means that normal windows are now prohibited from warping the
pointer under any circumstance, but the user (through specific
applications) may still elect to have the window manager honor
_NET_ACTIVE_WINDOW this way.
[1] https://specifications.freedesktop.org/wm-spec/wm-spec-1.3.html#sourceindication
[2] https://specifications.freedesktop.org/wm-spec/wm-spec-1.3.html#idm45682917892304
|
|
As discussed a couple of times [1] [2] on the openbsd-* mailing lists,
modal dialogs that are marked as active through EWMH will have cwm warp
the mouse back to them once it leaves the constraints of the window.
For us this is particularly a problem with dialogs created by QT (such
as the settings dialog in Quassel). Since no real solution was ever
posted on the mailing lists, just disable the warping behaviour for now.
This should not have any detrimental impact other than for the dialogs
that are "misbehaving" right now.
[1] https://marc.info/?l=openbsd-misc&m=155542694605428&w=2
[2] https://marc.info/?l=openbsd-ports&m=155508625010715&w=2
|
|
|
|
Original file locations in the OpenBSD tree:
- lib/libc/stdlib/reallocarray.c
- lib/libc/stdlib/strtonum.c
- lib/libc/string/strlcat.c
- lib/libc/string/strlcpy.c
- sys/sys/queue.h
|
|
determine what client to set active. Reduces a round trip for every window.
|
|
dosage/removal of wrappers, simplification of name queue, client cycle joins other kb/mb bound functions.
|
|
From Artturi Alm (though changed from 'm' to '5')
|
|
This fixes the problem where cwm's window menu wouldn't show Firefox's current
window title if it contains non-ASCII characters.
OK okan@
|
|
|
|
|
|
|
|
buttonpress handler; bail if we don't manage the screen. Allows us to find the
current client based on the screen/event root.
|
|
|
|
client thus always falling back to client_current(); while the current client
is problaby right in most cases, use event's subwindow (not window) to find the
client. Bail early if this event came to us from a screen we don't manage.
This is result of us grabing all keybindings off the root window instead of
selectively.
|
|
|
|
iterating over all (fallback if no screen provided for now). Initially convert
trivial uses of client_current().
|
|
|
|
checking due to ewmh.
|
|
delete; 'window-close' is now the proper action, but 'window-delete' as an
alias will remain until more interesting changes require breaking configs.
|
|
via property notify events. Previously only the flags were set but nothing was
in the path to apply said flags and/or bwidth. Required slight of re-orgnaization
of client_init.
|
|
|
|
|
|
into the keyrelease event, only performing what's actually needed for each;
should result in much fewer events against keyreleases. No intended behaviour
change.
Additionally, like we do for group membership, grab the keyboard only when
required for cycling.
|
|
border work for a group/ungroup action.
|
|
|
|
handler.
|
|
|
|
greatly simplifies upcoming work.
|
|
client_ctx in keypress and buttonpress event handlers; pass appropriate *ctx's
based on context.
While here, limit some globals, replace defines with appropriate variables and
fix some naming.
|
|
key press. This allows to remove a few hacks to duplicate functions only
for behaviour changes; now differing behaviours are pushed down to the
callback. Also will allow for previously unavailable actions to be bind-able
down the road.
|
|
the screen; adapted from an ancient diff from Sviatoslav Chagaev. Things
in this area will likely change, but put this in so it works now and
serves as a reminder.
|
|
requests); most callers do this already - deal with the few that do not.
client_ptrwarp becomes a simple wrapper (setpos) but it will be expanded.
|
|
active; while we already look at what's under the pointer, use this
information first, then look under the pointer (saving that round-trip).
This restores the active state to a client after restart even if the
pointer is not above it (and of course the pointer is not above another
client).
|
|
instead of relying on curcc.
|
|
|
|
|
|
|
|
client_find valid resources as needed, relieving the need for
screen_find to ungracefully handle invalid root windows. Removes a long
standing XXX. Should theoretically allow XClientMessage handling on
more than one X screen. Alter callers of screen_find to handle
failures.
|
|
and HOST_NAME_MAX+1, respectively.
ok doug@
|
|
|
|
|
|
|
|
to having to manage an array outside in screen_ctx for group names and
shortcuts. Simplifies (and moves bits for) reading, and constructing
data for, EWMH's _NET_DESKTOP_NAMES.
|
|
clients) directly into client_init, performing the X roundtrip only
once. With the previous change in maprequest, this moves decision making
into one place for creating new clients.
|
|
client_init and perform that X roundtrip only once.
|
|
header from xevents.c; noticed by Christian Neukirchen.
|
|
struct, binding; they were essentially the same accept for what was
'pressed', keysym or button.
|
|
then the window should appear on all desktops, which in our case is
assigned to group 0. Found to fix stalonetray due to the non-ewmh aware
range checking in group_movetogroup(); from Thomas Adam.
|
|
change allows a restart to trigger proper teardown first, even though
teardown is not (yet) complete.
After some discussion with oga@nicotinebsd.org regarding a more
complicated version/idea.
|
|
bits even closer.
|