| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Specification says that older strut properties must be ignored when
newer properties are set.
|
| |
|
|
|
|
| |
https://gitlab.gnome.org/GNOME/metacity/-/issues/34
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Reuse existing meta_window_same_client function to check if windows
are from same client/application.
https://gitlab.gnome.org/GNOME/metacity/-/issues/26
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
https://gitlab.gnome.org/GNOME/metacity/-/issues/33
|
|
|
|
|
| |
Based on mutter commit:
https://gitlab.gnome.org/GNOME/mutter/-/commit/eccc791f3b3451216f957e67fec47a73b65ed2b2
|
|
|
|
|
|
| |
Based on mutter commits:
https://gitlab.gnome.org/GNOME/mutter/-/commit/43633d6b2f6f602ba87956d5c20ee336b8b56236
https://gitlab.gnome.org/GNOME/mutter/-/commit/58d2a674c466b607e18e6c8e129a6cf1646fde7f
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Keep flags as they were set on client window.
|
| |
|
| |
|
|
|
|
|
|
| |
To use XResQueryClientIds we need XRes 1.2 or newer!
https://gitlab.gnome.org/GNOME/libwnck/-/issues/154
|
|
|
|
|
|
|
| |
We will use _NET_WM_PID when xserver does not have XRes extension
or its version is too old.
This partially reverts 9135966673e9fd430b9e8252abdb9c946295e25b.
|
|
|
|
| |
We are using XResQueryClientIds that is available in 1.2 version.
|
|
|
|
| |
https://gitlab.gnome.org/GNOME/libgtop/-/merge_requests/34
|
| |
|
| |
|
| |
|
|
|
|
| |
(cherry picked from commit d717bd6232e299cac18309c05593660427c5de0a)
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
According to Debian Code Search only MPlayer sets this property
(together with _NET_WM_ICON).
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
This reverts commit f2e22abc678be6dc8c7a5739976ace0775eed499.
|
| |
|
| |
|
|
|
|
| |
(cherry picked from commit 1e58c8e51fcab9a2521a7ff5771d7fe4412c476b)
|
| |
|
|
|
|
| |
https://gitlab.gnome.org/GNOME/metacity/-/issues/25
|