summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* accellabel: use g_string_free return valueAlberts Muktupāvels2023-03-231-2/+1
|
* window: use only newest available strut propertyAlberts Muktupāvels2022-12-241-57/+89
| | | | | Specification says that older strut properties must be ignored when newer properties are set.
* xrender: remove stray newlineAlberts Muktupāvels2022-10-251-1/+0
|
* xrender: find visual that matches depth of background pixmapAlberts Muktupāvels2022-10-251-3/+63
| | | | https://gitlab.gnome.org/GNOME/metacity/-/issues/34
* display: put windows with same WM_CLASS in tab list groupAlberts Muktupāvels2022-10-221-0/+6
| | | | | | | | | Use WM_CLASS as last thing to check if window should be shown in tab list group. GNOME Shell and xfwm4 use WM_CLASS to decide if windows belongs to same application. Also tasklist from libwnck does window grouping based on WM_CLASS. https://gitlab.gnome.org/GNOME/metacity/-/issues/26
* display: put windows from same client in tab list groupAlberts Muktupāvels2022-10-223-4/+7
| | | | | | | Reuse existing meta_window_same_client function to check if windows are from same client/application. https://gitlab.gnome.org/GNOME/metacity/-/issues/26
* display: ensure that tab group does not include wrong windowsAlberts Muktupāvels2022-10-221-14/+6
| | | | | | Make sure that we never put all windows in META_TAB_LIST_GROUP when focus_window is NULL. And to compare if windows have same group use meta_window_same_application.
* display: replace IN_TAB_CHAIN macro with an inline functionAlberts Muktupāvels2022-10-222-20/+44
|
* display: avoid unnecessary stack changesAlberts Muktupāvels2022-10-051-1/+39
| | | | | | | | | | | | | | | | | | Currently docks are raised when a mouse enters the window and are lowered when mouse leaves it. Typically this will make unnecessary stack changes and unneeded screen redraw. Functions meta_window_raise and meta_window_lower raises or lowers windows within the window layer. For dock windows that means that raising/lowering happens between windows in META_LAYER_BOTTOM layer or META_LAYER_DOCK/META_LAYER_TOP layers. In typical configuration with top and bottom panels this means that rasing/lowering happens between both panels for no reason. Stop doing that if dock does not overlap with other windows in same layer. Dock raising was added in commit 7be4c63ee459 when panel was put in the nromal layer.
* display: remove extra unmap events with same window and serialAlberts Muktupāvels2022-10-051-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Single XUnmapWindow call can result in multiple UnmapNotify events. Linked issue has attached python code intended to reproduce original bug and can be used to reproduce multiple UnmapNotify events for the same window. Steps to reproduce problem: 1. Run python3 Untitled.py; 2. Undock one of the application's child windows; 3. Minimize main window; 4. Unminimize main window. On drag start metacity gets map event - new MetaWindow is created. This window has override_redirect set to true, metacity selects StructureNotifyMask events. When child window is dropped outside main window we get 3 unmap events! One event was sent because we asked X server to do that by selecting StructureNotifyMask events. Second event was sent because child window parent was root window. We have asked for such events on root window by selecting SubstructureNotifyMask events. Third event seems to come from XSendEvent. At this point these multiple events are not problem. MetaWindow is destroyed when we get first event and rest are ignored. After that application sends map request and we create new MetaWindow. This time override_redirect is not set and we choose to not select StructureNotifyMask events. Unfortunately this mask is already in your_event_mask as we are not unselecting events when window is unmanaged. Now when we minimize main window (step 3) also dock window is minimized. We are just hiding window so we are adding pending unmap event so we can ignore it when it will arrive. On first event we correctly detect that it should be ignored but once second event arrives we are unmanaging this window. And here is our problem - trying to unminimize main window only main window gets restored! Main window does not find child window because it is destroyed. Use XCheckIfEvent to remove extra UnmapNotify events that has same window and serial preventing unnecessary window destruction. https://gitlab.gnome.org/GNOME/metacity/-/issues/31
* window: do not disable fullscreen for dialogsAlberts Muktupāvels2022-10-031-1/+2
| | | | https://gitlab.gnome.org/GNOME/metacity/-/issues/33
* workspace: focus only ancestors that are focusableAlberts Muktupāvels2022-10-031-7/+32
| | | | | Based on mutter commit: https://gitlab.gnome.org/GNOME/mutter/-/commit/eccc791f3b3451216f957e67fec47a73b65ed2b2
* window: add meta_window_is_focusableAlberts Muktupāvels2022-10-033-3/+11
| | | | | | Based on mutter commits: https://gitlab.gnome.org/GNOME/mutter/-/commit/43633d6b2f6f602ba87956d5c20ee336b8b56236 https://gitlab.gnome.org/GNOME/mutter/-/commit/58d2a674c466b607e18e6c8e129a6cf1646fde7f
* window-props: do not spew initial size_hints differencesAlberts Muktupāvels2022-10-031-1/+2
|
* window-props: stop lying about what client window sets or does notAlberts Muktupāvels2022-10-031-5/+9
| | | | | | We are calling meta_set_normal_hints from meta_window_new to initialize size_hints. Claiming that window sets minimum size to zero or that window did not set gravity is wrong and missleading.
* window-props: do not set XSizeHints flagsAlberts Muktupāvels2022-10-031-6/+0
| | | | Keep flags as they were set on client window.
* xprops: simplify size_hints_from_resultsAlberts Muktupāvels2022-10-033-24/+10
|
* xprops: remove unused functionsAlberts Muktupāvels2022-10-032-139/+0
|
* window: return _NET_WM_PID when XRes is not availableAlberts Muktupāvels2022-09-301-0/+3
| | | | | | To use XResQueryClientIds we need XRes 1.2 or newer! https://gitlab.gnome.org/GNOME/libwnck/-/issues/154
* window-props: re-add support for _NET_WM_PIDAlberts Muktupāvels2022-09-303-0/+30
| | | | | | | We will use _NET_WM_PID when xserver does not have XRes extension or its version is too old. This partially reverts 9135966673e9fd430b9e8252abdb9c946295e25b.
* display: check if XRes extension is availableAlberts Muktupāvels2022-09-302-0/+23
| | | | We are using XResQueryClientIds that is available in 1.2 version.
* window-props: define HAVE_SYS_TIME_HAlberts Muktupāvels2022-09-301-0/+1
| | | | https://gitlab.gnome.org/GNOME/libgtop/-/merge_requests/34
* icon-cache: reset origin if property change invalidates iconAlberts Muktupāvels2022-03-221-11/+16
| | | | | | | | Client theoretically can unset / remove icon. We need to reset origin to make sure we try to load icon from other sources. Test application that can be used to set/unset icons: https://gitlab.gnome.org/GNOME/libwnck/-/merge_requests/42
* icon-cache: make get_icon_invalidated staticAlberts Muktupāvels2022-03-222-2/+1
|
* window: remove incorrect mask checkAlberts Muktupāvels2022-03-221-5/+4
| | | | | | XResGetClientPid already checks for XRES_CLIENT_ID_PID_MASK and does that correctly. We were doing direct comparition that would fail if mask would include something else.
* icon-cache: remove support for KWM_WIN_ICONAlberts Muktupāvels2022-03-194-101/+2
| | | | | According to Debian Code Search only MPlayer sets this property (together with _NET_WM_ICON).
* tooltip: request client side decorationsAlberts Muktupāvels2021-10-224-1/+329
| | | | https://gitlab.gnome.org/GNOME/metacity/-/issues/25
* fix build with --disable-dependency-trackingZoltán Böszörményi2021-08-291-0/+2
| | | | | | | | | | | | | | | | | | | | With split build and source directories AND --disable-dependency-tracking (like the way Yocto builds are done) there's a reproducible make failure on my Fedora 33 build host: | Making all in src | make[2]: Entering directory '.../metacity/1_3.40.0-r0/build/src' | .../metacity/1_3.40.0-r0/recipe-sysroot-native/usr/bin/glib-mkenums --template ../../metacity-3.40.0/src/core/meta-enum-types.c.in ../../metacity-3.40.0/src/core/window-private.h ../../metacity-3.40.0/src/include/meta-compositor.h > \ | meta-enum-types.c.tmp && mv meta-enum-types.c.tmp core/meta-enum-types.c | .../metacity/1_3.40.0-r0/recipe-sysroot-native/usr/bin/glib-mkenums --template ../../metacity-3.40.0/src/core/meta-enum-types.h.in ../../metacity-3.40.0/src/core/window-private.h ../../metacity-3.40.0/src/include/meta-compositor.h > \ | meta-enum-types.h.tmp && mv meta-enum-types.h.tmp core/meta-enum-types.h | mv: cannot move 'meta-enum-types.c.tmp' to 'core/meta-enum-types.c'mv: cannot move 'meta-enum-types.h.tmp' to 'core/meta-enum-types.h': No such file or directory | : No such file or directory | make[2]: *** [Makefile:2240: core/meta-enum-types.c] Error 1 https://gitlab.gnome.org/GNOME/metacity/-/merge_requests/24 Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
* core: drop use of volatileAlberts Muktupāvels2021-08-211-1/+1
|
* window: offset gravity position by invisible bordersAlberts Muktupāvels2021-07-221-2/+15
| | | | https://gitlab.gnome.org/GNOME/metacity/-/issues/21
* main: use correct timestamp when closing displayAlberts Muktupāvels2021-07-191-2/+7
|
* main: add SIGINT handlerAlberts Muktupāvels2021-07-191-1/+14
| | | | | | | | | With this metacity will exit cleanly when hitting Ctrl + C. To preserve existing behaviour with XSMP do not change restart style hint to IfRunning. https://gitlab.gnome.org/GNOME/metacity/-/issues/21
* main: use g_unix_signal_add to add signal handlerAlberts Muktupāvels2021-07-191-35/+5
|
* session: always finish interactionAlberts Muktupāvels2021-07-191-0/+5
| | | | | | | | | | | After commits 0b3f45bb1bf8 and db37deb589ea SmcInteractDone and SmcSaveYourselfDone is only called if zenity dialog exits with 0 code. Finish interaction also when dialog is closed by pressing Cancel indicating that shutdown should be canceled. https://gitlab.gnome.org/GNOME/metacity/-/issues/20
* session: remove redundant assignmentAlberts Muktupāvels2021-07-191-1/+0
|
* window-props: don't set override-redirect window as parentAlberts Muktupāvels2021-06-211-0/+10
| | | | | | | | | | | | | | | | | | | | | | Before commit c656c658940d override-redirect windows was not registered with meta_display_register_x_window. This means that Metacity was treating WM_TRANSIENT_FOR hint as invalid if it was pointing to override-redirect window. EWMH specification [1] says that WM_TRANSIENT_FOR property is defined for managed windows and extends its usage for override-redirect windows. Client should set WM_TRANSIENT_FOR on override-redirect window if it is child/popup for another window. As specification does not say anyting about using override-redirect windows as parent for managed windows and because it causes crashes in Metacity ignore WM_TRANSIENT_FOR if it is pointing to override-redirect window. [1] https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html#idm46291029654544 https://gitlab.gnome.org/GNOME/metacity/-/issues/18
* surface-xrender: restore opacity handlingAlberts Muktupāvels2021-06-171-1/+66
| | | | | | Commit 1021494e347da7045c1db834bf9e4f1b5e076f17 removed too much. https://gitlab.gnome.org/GNOME/metacity/-/issues/19
* compositor: enable xpresentAlberts Muktupāvels2021-04-131-1/+1
| | | | https://gitlab.gnome.org/GNOME/metacity/-/issues/13
* misc: remove Coverity annotationsAlberts Muktupāvels2021-03-193-7/+0
|
* bell: remove unused codeAlberts Muktupāvels2021-03-162-40/+0
|
* bell: remove tabsAlberts Muktupāvels2021-03-161-36/+41
|
* testboxes: fix test_find_closest_point_to_line testAlberts Muktupāvels2021-03-161-4/+12
| | | | Use g_assert_cmpfloat_with_epsilon to compare floating points.
* testboxes: use GRand to generate random numbersAlberts Muktupāvels2021-03-161-10/+9
| | | | Coverity CID: #1418268
* place: use GRand to generate random numbersAlberts Muktupāvels2021-03-161-3/+9
| | | | Coverity CID: #1445646
* display: add NULL check to fix coverity defectAlberts Muktupāvels2021-03-151-1/+1
| | | | | | | Coverity is right that window might be null but does not know that grab_op is not moving operation. Coverity CID: #1445663
* window: fix logically dead code defectAlberts Muktupāvels2021-03-151-3/+9
| | | | | | We assert that at least one of the two directions are set! Coverity CID: #1418266
* main: check g_setenv return valueAlberts Muktupāvels2021-03-141-1/+4
| | | | Coverity CID: #1502679
* core: suppress logically dead code defectAlberts Muktupāvels2021-03-141-0/+1
| | | | Coverity CID: #1445660
* place: use correct event to suppress defectsAlberts Muktupāvels2021-03-141-2/+2
| | | | Coverity CID: #1445646
* frames: use correct event to suppress defectAlberts Muktupāvels2021-03-141-1/+1
| | | | Coverity CID: #1445650