Johan Malm [Mon, 10 Jul 2023 15:56:02 +0000 (16:56 +0100)]
dnd: fix focus at end of dnd operation
By default, leave keyboard-focus with the surface that originally had it
at the end of a dnd operation. This is consistent with the default
behaviour of openbox and mutter.
If the 'focus/followMouse' option is enabled, then focus on the surface
under the cursor at the end of the dnd operation.
Johan Malm [Wed, 7 Jun 2023 20:44:38 +0000 (21:44 +0100)]
window-rules: support matchOnce attribute
...allowing a rule to be applied to only the first window matching a
particular criteria. For example, the following can be used to apply a
window rule to lxqt-panel but not its configuration window with the same
app_id:
Johan Malm [Sun, 11 Jun 2023 14:57:58 +0000 (15:57 +0100)]
config: fix bug with default scroll mousebind
Specify attribute name when adding default mousebind actions.
This is required because in src/action.c action GoToDesktop requires an
argument with key 'to' and does not accept `action_get_first_arg()`
because the action supports other optional attributes so we could not
guarantee that 'to' is the first one.
Tomi Ollila [Sun, 14 May 2023 17:44:59 +0000 (20:44 +0300)]
action: support {Go,Send}ToDesktop 'wrap' option
Make wrap 'true' by default for both GoToDesktop and SendToDesktop,
in order to default to the current behaviour, and to stay consistent
with Openbox behaviour.
Consolatis [Thu, 11 May 2023 21:36:51 +0000 (23:36 +0200)]
src/action.c: validate action type when assigning arguments
Before this patch it was possible to assign an argument with an
existing name to an action that didn't support the given argument.
An example of this is using `direction` for `GoToDesktop`.
This patch now only creates action arguments that are actually
defined for the given action type and logs an error for
unsupported arguments.
The commit also makes sure to always supply the argument name.
This will reduce required checks in other parts of the codebase
in future commits.
Tomi Ollila [Sat, 13 May 2023 13:10:33 +0000 (16:10 +0300)]
includes: identifier consistency in include guards
Made all header files to have LABWC_ prefix in include guard identifers.
Converted from __LABWC_ in 35 include/ files.
Converted from __LAB_ in 5 include/ files.
Added LABWC prefix to 3 include/ files.
Added include guards to 3 include/ files.
The double underscores were removed since according to C standard
those "are always reserved for any use".
John Lindgren [Wed, 19 Apr 2023 22:10:07 +0000 (18:10 -0400)]
xwayland: Add mapped argument to xwayland_view_create()
This is a trivial cleanup to make xwayland_view_create() symmetrical with
xwayland_unmanaged_create(), and avoid the need to access view->impl from
xwayland-unmanaged.c.
The return value of xwayland_view_create() is no longer user, so return void.
Rules are applied if windows match the criteria defined by the
'identifier' attribute which relates to app_id for native Wayland windows
and WM_CLASS for XWayland clients.
Matching against patterns with '*' (wildcard) and '?' (joker) is
supported.
Prevent wayland clients that request the X11 clipboard but closing
their read fd prematurely to crash labwc because of the unhandled
SIGPIPE signal. It is caused by wlroots trying to write the X11
clipboard data to the closed fd of the wayland client.
See https://github.com/labwc/labwc/issues/890#issuecomment-1524962995
for a reproducer involving xclip and wl-paste | head -c 1.
po: clean up language files
Changed entries in "Language" field to language code
Added language names to "Language Team"
Removed example email address
Fixed author names in Copyright section
Consolatis [Tue, 28 Mar 2023 17:23:49 +0000 (19:23 +0200)]
src/cursor.c: make sure the cursor is visible after startup
Before this patch, the cursor was invisible after labwc startup
unless manually moved by the user (or being positioned on top
of some some automatically spawned client surface). This patch
sets the cursor from its uninitialized value (LAB_CURSOR_CLIENT)
to the default cursor.
Consolatis [Mon, 27 Mar 2023 22:58:42 +0000 (00:58 +0200)]
src/cursor.c: fix invisible cursor on output loss / restore
Previously, the cursor image was only updated on output loss when the
cursor was on a labwc owned surface. This patch forces a re-enter of a
client surface in the remaining case of cursor being over a non-labwc
surface which causes the client to re-set its own cursor image.
Johan Malm [Sat, 25 Mar 2023 16:38:43 +0000 (16:38 +0000)]
desktop: move scene-tree node in move-to-back
view_minimize() does not need to call desktop_move_to_back() because the
stacking order is not changed and the windowSwitcher uses the scene-tree
nodes anyway.
Note: Movement of xwayland sub-views still relies on keeping server->views
in sync with z-order