Commit Graph

3678 Commits

Author SHA1 Message Date
Kim Woelders 8cf668e9c0 dialogs: Fix layout in window group selection
ASAN complains, bug might cause segv.

Broken by 3c42724f96 (in v1.0.25).

Reported by Milan Maljković.
2023-09-21 14:33:08 +02:00
Kim Woelders 6b9d2a6e34 dialogs: Remove extra separator in Miscellaneous Settings
Reported by Milan Maljković.
2023-09-21 14:33:08 +02:00
Kim Woelders 4f617c77bf text: Converge faster in TextFit functions
"Fitting" very long strings (replacing center piece of text with
ellipsis) could be very slow.

This should speed things up considerably by skipping a lot of
iterations.
2023-09-21 14:33:08 +02:00
Kim Woelders f7e60a5e29 text: Mostly trivial changes 2023-09-21 14:33:08 +02:00
Kim Woelders 9a1af26614 text: Cosmetics
Eliminate mlen.
2023-09-21 14:33:08 +02:00
Kim Woelders 051a418261 text: Fix calculating long multibyte string length (codepoints)
Fixes very long window titles sometimes spilling over into border
buttons.

Reported by Milan Maljković.

This fix causes slow rendering of very long window titles, this will be
dealt with shortly.
2023-09-21 14:33:03 +02:00
Kim Woelders edc06f4950 text: Drop unused fsize argument in Text functions 2023-09-21 14:32:11 +02:00
Kim Woelders 41ae0ec99e ipc: Fix potential segv
Also increase intermediate ipc buffer size.
2023-09-21 14:31:56 +02:00
Kim Woelders de581414db menus: Limit menu item text width
E.g. when a window title is rediculously long, the window list could
become rediculously wide.
The width is now rather arbitrarily limited to a third of the screen
width.

Reported by Milan Maljković.
2023-09-20 19:23:05 +02:00
Kim Woelders 2fdf689d90 ewins: Fix gravity related placement issue
Attempt to fix placement issues (walking window) for windows with
non-NorthWest gravity when withdrawn/shown.
2023-09-11 20:41:38 +02:00
Kim Woelders 50356c8b12 Revert "Optionally ignore gravity from WM_NORMAL_HINTS"
Doesn't fix the problem.

This reverts commit c6c5070311.
2023-09-11 20:40:47 +02:00
Kim Woelders 2e7e3f89d5 tooltips: Fix initially missing root tooltips
If enabled, they would initially not appear until some border or theme
element was entered and left.
2023-09-10 17:31:17 +02:00
Kim Woelders c6c5070311 Optionally ignore gravity from WM_NORMAL_HINTS 2023-09-10 16:48:15 +02:00
Kim Woelders 230ee4d9e9 Update non-active desk pagers when background is changed
#11
2023-08-12 19:49:47 +02:00
Kim Woelders bed85d0f42 Remove some pseudotransparency leftovers 2023-08-12 19:49:47 +02:00
Kim Woelders b26c137bc3 iclass: Drop image border adjustment
In the switch from imlib to imlib2 (a couple of decades ago) an
adjustment of image borders was introduced to accommodate for a
difference between the old and new imlibs.

Without this adjustment a few themes have incorrectly rendered elements
(unintended window border fading, opaque pager area highligt frame, more?).

It turns out that the origin of the problem is in the scaling code of
imlib2, and will be fixed in imlib2 (most likely v1.12.0).
2023-08-09 19:53:28 +02:00
Kim Woelders 29f3494847 config: Drop -include when preparsing
epp appears to ignore it.
2023-07-28 19:54:48 +02:00
Kim Woelders e436edb5c9 Fix a couple of bugs in new quoting/comment handling 2023-06-27 06:12:33 +02:00
Kim Woelders 30bdaa84cb bindings: Handle quoting in AclassConfigLineParse()
Commands in bindings can now use quoting.

Suggested by Dennis Nezic.
2023-06-26 19:52:23 +02:00
Kim Woelders 050d310ce6 ipc: Avoid potential crash in AclassConfigParseIpc()
Also, let AclassConfigLineParse() deal with comments.
2023-06-26 19:52:23 +02:00
Kim Woelders 890173a5cf Move some string handling functions around
To a maybe sligthly more logical location.
2023-06-26 19:52:15 +02:00
Kim Woelders 4015600f26 events: Fetch events also when blocked
Fetch but don't process, just queue up.
Should make no difference for now but may be needed later.
2023-06-14 17:39:34 +02:00
Kim Woelders 54845aae1c events: Separate event fetching and processing 2023-06-14 17:39:34 +02:00
Kim Woelders bccc3fc431 events: Change some variable names 2023-06-14 17:39:34 +02:00
Kim Woelders 07bdcfdb6b GSOD: Ungrab server before opening new connection
Going here while having grabbed the server would cause a deadlock when
opening the new connection.
2023-06-14 17:35:29 +02:00
Kim Woelders 16ca9c9ef4 startup: Only repaint if animating
Also
- Insert delay to "show" progress
- End at 100%
2023-03-20 13:57:54 +01:00
Kim Woelders f384e2adc0 desks: Prevent nested desk switches
Using the mouse wheel (maybe also the keyboard?) it was possible to
start an animated desk switch while one was already in progress.
This could cause some incorrect state and window placement.

Also add a few debug messages.
2023-03-20 13:50:45 +01:00
Kim Woelders 52c127d896 Revert "ewins: Remove redundant container window move"
This move is not redundant. If removed the container window may not be
correctly placed when calculating shape.

This reverts commit 8a3c11c449.
2023-03-03 17:00:57 +01:00
Kim Woelders 19ed4327f1 menus: Expose option to show/hide menu icons in configuration dialog
#9
2023-03-01 09:09:14 +01:00
Kim Woelders 32b0fb591e Add missing include 2023-02-06 17:32:34 +01:00
Kim Woelders 1cef4a1044 cursors: Rework cursor creation
In non-ancient mode (i.e. using XRenderCreateCursor) this should be
somewhat more efficient.
2022-12-28 09:42:13 +01:00
Kim Woelders 8f64686175 cursors: Mostly cosmetic function name changes 2022-12-28 09:42:13 +01:00
Kim Woelders d9549a75e8 cursors: Mostly cosmetic adjustments around fore/background colors
Properly propagate the foreground/background color values and swap them
where applied (due to inverted cursor image bitmaps).
Should make things a bit less confusing.
2022-12-28 09:42:01 +01:00
Kim Woelders 304e66645c extinitwin: Move null cursor definition to separate function
Should make it a bit more clear what goes on here.
2022-12-25 11:57:18 +01:00
Kim Woelders 5fe3253e3a eimage: Split EImageDefineCursor 2022-12-25 11:55:17 +01:00
Kim Woelders 53b82bbd26 Some include tweaks 2022-12-21 20:05:56 +01:00
Kim Woelders b41a6a9a53 pagers: Avoid some overhead 2022-12-11 20:19:09 +01:00
Kim Woelders 5a4f56e1e2 Forgot some 2022 2022-12-11 20:17:26 +01:00
Kim Woelders ff293d12d2 ewins: Tweak spurious MapRequest handling
Some clients produce multiple MapRequests (presumably by doing
multiple XMapWindow()s early, which hits case "B").
Not sure when case "A" is hit, maybe in connection with incorrect
iconification or withdrawal and re-map.

Now we only reparent (and move) if not already reparented, and place
correcly in the no-container case (which most likely is to do nothing
as the window probably already is parented/placed correctly).
Also always print a message to the console on spurious MapRequests.

This fixes client window placement within the frame in the no-container
case with some clients.
2022-12-11 16:21:42 +01:00
Kim Woelders 8a3c11c449 ewins: Remove redundant container window move
.. I think..

If for some reason this move is needed, it should probably be done in
EwinBorderCalcSizes() where the other frame windows (border parts) are
moved/sized.

Normally the container window placement is performed by
Ewin(Move)Resize().
2022-12-11 16:21:17 +01:00
Kim Woelders 4cbd7179b2 memory.c: Consistently use EMALLOC() 2022-12-10 15:02:59 +01:00
Kim Woelders ee2da6a545 focus: Keep focus when un-fullscreened
With pointer focus modes, when un-fullscreening a focused window, focus
was lost if the pointer landed in another window.

#5
2022-12-09 16:11:46 +01:00
Kim Woelders 6a0c30e77f timers: Properly fix timer lockup issue
Adding timers from within timer callback functions could cause lockups
and memory leaks.
2022-10-30 10:28:14 +01:00
Kim Woelders 286a815b92 timers: Fix potential lockup when switching desks fast
Not sure exactly why - probably some nested timer calls - but this seems
to fix the problem.
2022-10-28 22:30:34 +02:00
Kim Woelders 1e757064a9 Handle quoting in StrlistDecodeEscaped()
IPC commands and exec's in menu files can now use quoting.
2022-10-05 20:17:44 +02:00
Kim Woelders 6c1fbaaedd Fix some clang-analyzer complaints 2022-09-22 07:35:30 +02:00
Kim Woelders dee8d4f369 edge: Prevent pointer click and motion events propagating to root
Avoids activating desk flips, root menus, and root window tooltips when
clicking on or moving over the edge windows.
2022-07-23 13:44:51 +02:00
Kim Woelders 032e0b3896 edge: Refactor window creation 2022-07-23 13:44:51 +02:00
Kim Woelders ee3355669c edge: Cosmetics 2022-07-23 13:44:51 +02:00
Kim Woelders 3b07d3f12a events: Discard all but last reparent event in queue for window
Processing obsolete reparent events may cause trouble.
However, this is probably no guarantee that all obsolete reparent events
are discarded.
2022-07-02 22:58:02 +02:00
Kim Woelders 504b75bc70 events: Trivial cleanup 2022-07-02 22:57:53 +02:00
Kim Woelders 6369dfa7dd menus: Fix potential crash
When requesting to show a menu already shown it would be hidden before
being shown again, which could cause a crash due to incorrect processing
of reparent events.

Now we just ignore requests to show a menu that is aleady shown, which
bypasses the event processing issue and is reasonable anyway.
2022-07-02 22:57:53 +02:00
Kim Woelders 5e7c2a034a arrange: Keep upper left corner on screen when centering window 2022-06-13 07:58:27 +02:00
Kim Woelders d5724bd6cc ipc: Improve help for win_op target specification 2022-06-11 20:36:14 +02:00
Kim Woelders 597fcf7be7 xprop: Drop setting default desktop names in ex_netwm_desk_names_set()
Should be set up elsewhere.
2022-06-10 20:52:58 +02:00
Kim Woelders 85cdfe857c desktops: Enable setting desktop names 2022-06-10 20:52:31 +02:00
Kim Woelders 28c1a5fd05 desktops: Introduce DesksGetNames() 2022-06-10 20:49:38 +02:00
Kim Woelders 64e2ef8741 desktops: Cosmetics 2022-06-10 20:49:38 +02:00
Kim Woelders ed4c748a91 Introduce HintsSetDesktopNames() 2022-06-10 20:49:38 +02:00
Kim Woelders 1f2700aae6 Introduce EobjSetName() 2022-06-10 20:49:38 +02:00
Kim Woelders 02ddb6e80b iclass: Remove unneeded header 2022-05-28 08:58:53 +02:00
Kim Woelders 6c784dc73b iclass: Make active state more visible in fallback icon class 2022-05-28 07:53:02 +02:00
Kim Woelders 474b5161ad ewins: Fix ewin area calculation
Checking EwinIsOnScreen() was meant to be an optimization but may cause
inconsistencies if ewin is slightly off-screen.
2022-05-27 17:15:17 +02:00
Kim Woelders 7963834b98 GSOD: Fix repaint after quit by button press
Also add cosmetic delay.
2022-05-26 05:53:15 +02:00
Kim Woelders 343137f1b5 GSOD: Some refactoring 2022-05-26 05:50:58 +02:00
Kim Woelders c35690b4a4 containers: Fix creating new iconboxes
When creating a new iconbox without giving a name (eesh ibox new) as
done by the desktop menu this would not work if an iconbox named _IB_<N>
(<N> being the number of containers) already existed.
2022-05-24 07:19:57 +02:00
Kim Woelders 556fadb3c1 containers: Cosmetics 2022-05-24 06:46:10 +02:00
Kim Woelders 8878d862fd background: Discard broken backgrounds when opening configuration dialog 2022-05-13 15:35:10 +02:00
Kim Woelders f640a09346 moveresize: Fix screen edge resistance for grouped windows
Previously a window group being moved would not be affected by the
screen edge resistance.
Now the dragged window is subject to the screen edge resistance.
2022-05-09 15:49:46 +02:00
Kim Woelders ebd3b74f49 moveresize: Move SnapEwin() to where it is used. 2022-05-09 15:49:46 +02:00
Kim Woelders a68018d795 moveresize: Enable configuring edge restistance in dialog 2022-05-09 14:05:24 +02:00
Kim Woelders f8d7cb8c00 arrange: Introduce screen struts
Can be used to  restrict area where windows are normally placed.
Works like struts set by clients with _NET_WM_STRUT.

Sugested by Milan Maljković.
2022-05-03 19:20:19 +02:00
Kim Woelders 398622f986 arrange: Refactor SnapEwin() 2022-05-03 19:20:19 +02:00
Kim Woelders de008aa637 session: Fix broken session id handling
Also fixes a minor memory leak.
2022-05-01 20:19:43 +02:00
Kim Woelders c350cbcf4b pinning: Remember across restart 2022-05-01 20:19:43 +02:00
Kim Woelders 5938226ffd main: Don't start edox on first startup
The edox documentaion is rather dated - time to drop it.
2022-05-01 20:19:43 +02:00
Kim Woelders cf5927deb8 Clamp window position on move
In non-compositing mode the x/y coordinate limts are [-32768; 32767] as
should be expected. If moving beyond these values the coordinates are
just set modulo 2^16 (like in a signed 16 bit integer) and most likely
this isn't noticed anywhere.

In compositing mode the coordinates apperently must be clamped some
more, but it is not clear why or where the limit is.
The problem manifests itself in that a window moved "too far" seems to
have disappeared when moving it back on screen, possibly because the
name pixmap is invalidated.
Shading/unshading the window makes it re-appear.

The problem can be seen when dragging a window far off a (small) pager.
2022-04-30 20:26:41 +02:00
Kim Woelders dc5db9e4a1 CM: Adjust shadowing conditions some more
Re-enable sharp shadows on shaped windows.
Should be ok now that sharp shadowing shaped windows has been fixed.
2022-04-29 20:01:17 +02:00
Kim Woelders 5b071a0e26 CM: Fix sharp shadows when window is shaped
This once did work. I wonder when it broke.
2022-04-29 19:53:08 +02:00
Kim Woelders f07b6a74e5 ipc: Add custom format window_list 2022-04-28 19:26:58 +02:00
Kim Woelders 546c1bb2df dialogs: Text cleanups
In general only capitalize first word.
Capitalization of words was somewhat inconsistent throughout the
dialogs.
2022-04-24 12:41:25 +02:00
Kim Woelders a4cd43578d dialogs: Fixup after recent layout changes 2022-04-24 12:22:58 +02:00
Kim Woelders 5f23c8fce9 arrange: Fix C++ build 2022-04-24 11:39:50 +02:00
Kim Woelders 3ad01fdda7 focus: IPC help tweaks
- Mention next, prev, and focus mode ?
- Some wording and format changes
2022-04-22 17:00:05 +02:00
Kim Woelders 6d6d1c8dc4 ipc: Debug tweaks 2022-04-22 13:23:32 +02:00
Kim Woelders a09b13260a dialogs: Drop re-centering combined dialog on item change
Gives maybe a bit more smooth appearance.
Allows it to be moved away and not re-centered on change.
2022-04-22 08:02:23 +02:00
Kim Woelders 3c42724f96 Dialog layout adjustments
In general left-align text labels.
2022-04-22 07:41:58 +02:00
Kim Woelders 8090324299 moveresize: Refactor some conditions for readability 2022-04-22 07:35:28 +02:00
Kim Woelders a5228ad9e0 moveresize: Remove long time unused constrained move code
Not active because doMoveConstrained() has been disabled for ages.

Was effectively equivalent to setting misc.snap.screen_snap_dist to
large value.
2022-04-22 07:35:20 +02:00
Kim Woelders 04f040199c moveresize: Remove long time unused swapmove code
Not active because doSwapMove() has been disabled for ages.

Not resurrecting, doesn't seem to work properly.
2022-04-22 07:35:00 +02:00
Kim Woelders e789b1740e moveresize: Remove disabled nogroup move functions
Nogroup operations have been implemented by other means.
2022-04-21 09:08:47 +02:00
Kim Woelders 5e7ca9c93e containers: Configuration saving tweaks - fixup
Forgot to change file name buffer, container configuration changes
could get lost.
2022-04-19 18:11:21 +02:00
Kim Woelders 9cfe1e2577 Fix some problems with resize-by-keyboard
If using the pointer while in resize-by-keyboard mode one could run into
a couple of issues, among others that the window outline frame might not
be taken down.

To fix this the pointer is now also grabbed in resize-by-keyboard mode
but pointer events ignored.
2022-04-19 17:05:55 +02:00
Kim Woelders 0eb986a943 ipc: win_op help updates 2022-04-18 20:41:11 +02:00
Kim Woelders 34f007d088 Add window option to pass-through pointer events 2022-04-16 11:26:17 +02:00
Kim Woelders edd9216610 arrange: Disable ARRANGE_BY_POSITION mode
Rather perculiar thing..
2022-04-04 18:35:45 +02:00
Kim Woelders 684e911c9e arrange: Simplify/speed up by using qsort(), cosmetics 2022-04-04 18:35:45 +02:00
Kim Woelders b3e5758442 arrange: Minor tweak in SnapEwin()
Use EwinListGetAll() instead of EwinListOrderGet().
ListWinGroupMembersForEwin() uses EwinListGetAll() (i.e. the stacking
list) so it seems more consistent to use the same throughout this
function.
2022-04-04 13:21:18 +02:00
Kim Woelders c5ffe964b0 arrange: Use object order list when arranging
Previously the stacking order was used. This meant that windows of the
same size after stacking changes might be shuffled around when doing e.g.
"desk arrange", which does not seem right.
2022-04-04 13:21:18 +02:00
Kim Woelders 31cb37f935 arrange: Remove pointless call to EwinListGetAll() 2022-04-04 13:21:18 +02:00