| Age | Commit message (Collapse) | Author | Files | Lines |
|
The description for --no-force-fullscreen explicitly states that it
disabled forcing fullscreen mode on windows that have *no* decorations
and are screen-sized.
Up until now, the code directly contradicted that by running the part
only if either the decorations where *enabled* or no CSD being used.
That causes multiple problems.
For once, modern video players, which can certainly not be regarded as
"legacy applications", that try to show the video window as big as
possible and hence set the extents to exactly the screen size, including
using static gravity (so that borders are NOT removed from the window
size automatically) but still request a border are wrongly forced into
fullscreen mode by this hack. Changing the gravity would work around
that problem because the window size is effectively lowered, but we
can't expect applications to work around bugs in marco.
Secondly, the check for window decorations (or not) gets completely
cancelled out by the OR'd check for no CSD. According to the original
commit message, this hasn't been the intention, but rather to NOT force
fullscreen mode on windows that have no decorations and are CSD. It was
meant well, but the logic behind the change failed to do what it was
supposed to do.
Hence, fix that by checking if an application explicitly disabled window
decorations *AND* is not CSD.
This syncs up the help description and code behavior and fixes the CSD
part, but note that, naturally, it also changes the general behavior.
Specifically, this might break cases in which applications were supposed
to be forced into fullscreen mode even though they didn't explicitly
disable window decorations. I'd argue that such behavior would rather be
a bug and not a feature, though.
|
|
Add user settings to control how minimized and urgent windows are
ordered during Alt+Tab.
1. alt-tab-minimized-placement:
- 'mru': Mix minimized windows in MRU order
- 'end': Show minimized windows last (current behavior, default)
- 'hidden': Exclude minimized windows from Alt+Tab
2. alt-tab-urgent-placement:
- 'start': Show all urgent windows first (current behavior, default)
- 'mru': Mix urgent windows in MRU order
Fixes #824
Closes #819
|
|
When two windows are tiled side-by-side or in complementary quarter-tile
positions, dragging the shared inside edge now resizes both windows
simultaneously.
Fixes #615
|
|
Fixes #784.
Commit 6ea23df ("window: do not unfocus on new window") imported the
Metacity bf17c79 / Mutter 998d921d behavior for GNOME Bugzilla #773210:
when a new transient maps without taking focus, keep focus on the parent
so GTK popup and completion windows and VLC fullscreen controls do not
steal keyboard focus.
That blanket change also affected modal dialogs whose parent already has
focus. Electron and GTK file chooser dialogs can reach
meta_window_show() with takes_focus_on_map false because their
_NET_WM_USER_TIME is missing or stale. Since 6ea23df, such dialogs are
mapped above the parent but keyboard focus stays on the parent, so
typing goes to the wrong window.
Keep the bf17c79-equivalent behavior for non-modal transients, but when
the new window is a META_WINDOW_MODAL_DIALOG whose ancestor is the
current focus window, force takes_focus_on_map so the blocking dialog
receives keyboard focus immediately.
|
|
Windows using StaticGravity (like Qt apps) would shift up and left by
the visible frame border size each time they were hidden to system tray
and restored. The position drift compounded with each cycle. This
changes those windows to use the client's actual root position.
Fixes #534
|
|
The wireframe resize/move popup used the "fixed" font, which is 13px and
quite small for modern displays. This changes it to "10x20", which is
20px and is included as part of the same Xorg fonts package.
|
|
The wireframe drawn in reduced-resources mode included invisible resize
borders, making it larger than the visible window. This removes the
invisible borders from the xor rect calculation.
Fixes #532
|
|
When using switch-windows-all to cycle through windows across all
workspaces, marco was grouping windows by workspace rather than using
a global MRU (most-recently-used) list. This caused several issues:
- Sticky windows appeared multiple times, once per workspace
- Window order was confusing (since they were grouped by workspace number)
- Behavior was different from other window managers
Fixed by collecting all windows, sorting them by recency, then building
the tab list from this global list.
Fixes #286
|
|
pass focus to window if it is on another workspace
|
|
Corner-tiled windows were being treated as maximized horizontally, which
is wrong. Instead, we clear all maximized flags to make sure their size
is respected on reload.
Fixes #710
|
|
Add Shift+Print keybinding to trigger 'mate-screenshot --area' for
interactive area selection. This gives users a dedicated keybinding for
area screenshots in addition to the existing Print (screen) and
Alt+Print (window) shortcuts.
Fixes mate-desktop/marco#157
|
|
This prevents race conditions with applications like mate-screenshot
that need to grab input (e.g. for area selection).
Fixes mate-desktop/mate-utils#37
|
|
Replace putenv-based child setup with glib environment functions. This
enables posix_spawn for keybindings and it fixes an old memory leak with
not being able to free the string we added to putenv.
|
|
There was a 10px difference in the calculation between the (correct)
center-new-windows placement and the (incorrect) move-to-center
keybinding. By using the same function in both places we can make sure
the calculation is consistent.
|
|
Extend MetaFrameBorders to include shadow and resize borders to
calculate invisible border size. Also added border caching to prevent
recalculating borders on every frame operation.
This is a backport of the following commits from Metacity:
- https://gitlab.gnome.org/GNOME/metacity/-/commit/21e664af
- https://gitlab.gnome.org/GNOME/metacity/-/commit/3c6e269b
- https://gitlab.gnome.org/GNOME/metacity/-/commit/700e87ea
|
|
Adds GNOME3-style dynamic workspace management. Workspaces are created
when no empty ones exist and removed when multiple empty workspaces are
present, maintaining exactly one empty workspace at the end.
Fixes #406
|
|
This allows marco to respond to HiDPI scale changes without requiring
a restart. When the scale changes, marco now automatically updates all
icons (windows, xprops, alt+tab, etc.) and mouse cursor to be at the
correct scale factor.
Window decorations are handled through an internal GDK signal triggered
from XSettings changes, and so already work out of the box.
|
|
Adds support for configurable mouse actions on window titlebars,
including middle-click and scroll wheel events.
New actions added:
- close: Close the window
- raise: Raise window to top
- toggle_stick: Toggle sticky state (all workspaces)
- toggle_above: Toggle always-on-top state
Fixes #425
Fixes #787
Note: requries matching mate-control-center changes to work properly
|
|
In systems with bamfdaemon running, windows get this property for
finding the dekstop spec file of an application. This can be used to
find the defined icon for any application window that reports this
attribute and provider much better icon matching.
|
|
Looking up GDesktopAppInfo from the GTK Application ID we can get a much
better match for the icon and load it at the appropriate scale. This
results in matching icons to straneous windows and better looking icons
overall.
|
|
GTK+ has support for the application ID property. This will allow Marco
to reconstruct the path to the desktop spec file and so have access to
all internal attributes (e.g. name, icon, etc.)
|
|
Based off Metacity 's commit 7c1cc3ca1d8131499b9cf2ef50b295602ffd6112 [1].
[1] https://gitlab.gnome.org/GNOME/metacity/-/commit/7c1cc3ca1d8131499b9cf2ef50b295602ffd6112
|
|
X's Success return value is 0, not a boolean, so the check was
effectively inverted.
|
|
When the active workspace is changed, marco figures out which window
should get focus by calling `focus_ancestor_or_top_window`. In some
cases that call might include a window that should not get focus as
`not_this_one`.
When `not_this_one` refers to a window, the function will check to see
if it has a parent, and if it does, it will ignore the new workspace's
`mru_list` and will focus that parent window. However, it doesn't check
to see if the parent window is actually on the new workspace. If the
parent isn't on the new workspace, focusing it will drag it over,
including the transient window that was supposed to be ignored. This
isn't the result a user would likely expect, and is made more confusing
by the parent window being minimized, stuck that way until the user
switches to another workspace and back.
This change makes `focus_ancestor_or_top_window` ignore the
`not_this_one` window if it isn't on the new workspace's `mru_list`.
Instead it will just search the new workspace's `mru_list` for a window
to focus.
|
|
This is Metacity commit 50358a95 ("Allow applications to raise windows
when raise_on_click is off. Closes #445447.") applied to Marco without
modification.
It also includes a change to the GSettings key's description to remove
the now obsolete warning on the raise-on-click key, & replaces it with
an actually useful description. This is copied from the equivalent key
in gsettings-desktop-schemas.
Fixes: https://github.com/mate-desktop/marco/issues/762
|
|
|
|
Enabling code that is supposed to be used in compositing conditions is
harmful if compositing is not actually available. Just checking the
preference is not enough to make sure that compositing is available -
the X server might be missing crucial extensions for compositing to
work, which in turn correctly disables the internal compositor.
The end result is graphical issues like black borders around windows in
such situations.
Make sure that compositing is both requested AND available to fix this
bug.
|
|
Fixes #757.
|
|
|
|
|
|
Needed for X2Go as it does not have XRES 1.2 extension.
|
|
Before using any Xres extension one must call XResQueryExtension()
Also make sure Xres 1.2 is available as marco need XResQueryClientIds()
|
|
|
|
window-props: use XResQueryClientIds to get pid
_NET_WM_PID is unreliable! It can be faked or pid might be from
different namespace. Ignore _NET_WM_PID and use XResQueryClientIds
to get pid.
https://gitlab.gnome.org/GNOME/metacity/-/commit/bcbe966511362a8eb8c8c64035ab160086c931f8
|
|
When opening and then closing certain applications
the focus was correctly regained by the previous window
but it wasn't brought into the foreground.
To fix this we call meta_workspace_focus_default_window() for both NotifyDetailNone and NotifyPointerRoot.
These two are always mentioned together in the X docs:
https://tronche.com/gui/x/xlib/events/input-focus/normal-and-grabbed.html
Some programs will have NotifyDetailNone when closed, while others end up with NotifyPointerRoot.
|
|
fixes https://github.com/mate-desktop/marco/issues/735
|
|
directly on WM startup.
The marco WM is used in Arctica Greeter [1]. There recently
has a security issue been detected where people could open
applications via marco keybindings inside the greeter (display
manager) session.
.
A work-around could be evoking marco-message after marco startup
and disable all keybindings then. However, a more preferred fix
is provided by this patch: start-up marco with keybindings disabled
from the beginning.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- drop white spaces
|
|
|
|
In addition to existing properties use also new _GNOME_WM_STRUT_AREA
property that allows creating struts between monitors.
https://mail.gnome.org/archives/wm-spec-list/2018-December/msg00000.html
https://gitlab.freedesktop.org/xdg/xdg-specs/merge_requests/22
origin commit:
https://gitlab.gnome.org/GNOME/metacity/commit/922de13
|
|
In addition to existing _NET_WORKAREA property set also new
_GTK_WORKAREAS_Dn property where n is desktop number (between 0
and _NET_NUMBER_OF_DESKTOPS - 1).
https://mail.gnome.org/archives/wm-spec-list/2018-December/msg00000.html
https://gitlab.freedesktop.org/xdg/xdg-specs/merge_requests/22
origin commit:
https://gitlab.gnome.org/GNOME/metacity/-/commit/3d8b03d
|
|
This pull request prevents shadows being rendered for left and right side titled windows. This behaviour is consistent with maximised windows, which also do not render shadows.
The rationale for this change is so that when two windows are titled along side each other, it prevents central shadows bleeding into the touching points of the windows.
metacity-theme-x.xml has provision to style left/right titled windows. This patch makes it possible to to create window themes that present clean side-by-side tiled windows.
|