| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
The experimental API clutter_stage_set_paint_callback() is replaced
with an ::after-paint signal as of Clutter 1.19.5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When Mutter is restarted and cleans up the window positions
cleanly, we need to add gravity adjustments. We can detect
this easily.
- Windows started before the window manager (should add
add gravity adjustments)
- Replacing a different window manager (should add gravity
adjustments)
- A crash (no adjustments needed)
In GNOME the first two cases shouldn't happen in normal
usage, so assume the third case (though that *shouldn't*
happen in normal usage either.)
|
|
|
|
|
|
|
|
|
|
|
| |
When a window is initially created, we need to save it's user rect
after any adjustments for gravity. Otherwise, the next time the window is
queued for a resize, it will jump back to it's initial position.
We did that for newly created windows, but on restart, when windows
were already placed, the logic skipped saving the position. Use an
explicit flag so that we always save the position for newly created
MetaWindows.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Track the stereo status of windows using the new EXT_stereo_tree
GLX extension.
When stereo is enabled or disabled, a restart is triggered via
meta_restart() after a timeout, setting a _META_ENABLE_STEREO
property on the root window to indicate whether we should
turn on a stereo stage for clutter. The property avoids a loop,
since we need to enable stereo *before* initializing Clutter and GL,
but we need GL to figure out whether we have stereo windows.
Stereo windows are drawn to the stage using new functionality
in Cogl to setup a stereo context, select which buffer to draw
to, and draw either the left or right buffer of a stereo
texture_from_pixmap.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current GNOME Shell Alt-F2 restart looks very messy and also
provides no indication to the user what is going on. We need to
restart the compositor to switch in and out of stereo mode, so
add a framework for doing this more cleanly:
Additions:
meta_restart(): restarts the compositor with a message
MetaDisplay::show-restart-message: signal the embedding
shell to show a message
MetaDisplay::restart: signal the embedding shell to restart
itself.
meta_is_restart(): indicates whether the current instance is a
restart so we can suppress login animations.
A helper program meta-restart-helper holds the composite overlay
window up during the restart to avoid visual artifacts.
|
|
|
|
|
|
| |
The object manager already has a reference.
https://bugzilla.gnome.org/show_bug.cgi?id=729732
|
|
|
|
|
|
| |
We don't need it, we should free it.
https://bugzilla.gnome.org/show_bug.cgi?id=729732
|
|
|
|
|
|
|
|
|
| |
laptop lid
Only do it if the current configuration was actually created
as the result of closing the laptop lid.
https://bugzilla.gnome.org/show_bug.cgi?id=725637
|
|
|
|
|
|
|
|
|
| |
We can only apply a configuration if its outputs match the connected
ones, so discard the current configuration if the set of output changes
(for example for hotplug), otherwise we will crash trying to apply
the bogus previous configuration.
https://bugzilla.gnome.org/show_bug.cgi?id=725637
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
We track changes to windows fullscreen state and stacking order
to determine a monitor's in-fullscreen state, but missed the
obvious case of moving a fullscreen window between monitors.
https://bugzilla.gnome.org/show_bug.cgi?id=728395
|
|
|
|
|
|
|
|
|
| |
Commit 585fdd781cc5 not only removed the tabpopup, but set invalid
handlers (a.k.a. NULL) for those shortcuts; add back handling of
basic handling of those shortcuts by switching instantly without any
popups.
https://bugzilla.gnome.org/show_bug.cgi?id=728423
|
|
|
|
| |
Update NEWS.
|
|
|
|
|
|
|
|
| |
After reading the atom, scale the value from 0xffffffff to 0xff. Not doing so
causes Clutter to truncate the opacity value, and only read the last two digits.
Hence, 0x7fffffff (50%) becomes 0xff (100%).
https://bugzilla.gnome.org/show_bug.cgi?id=727874
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We guarantee ourselves that a valid pixmap will appear any time
that the window is painted. The window actor will be scheduled
for a repaint if it's added / removed from the scene graph, like
during construction, if the size changes, or if we receive damage,
which are the existing use cases where this function is called.
So, I can't see any reason that we queue a redraw in here.
With the split into surface actors, we don't have an easy place
we can use to queue a redraw, and since it's unnecessary, we can
just drop it on the floor.
https://bugzilla.gnome.org/show_bug.cgi?id=720631
|
|
|
|
| |
Update NEWS.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Update NEWS.
|
| |
|
|
|
|
|
|
| |
This is necessary to reimplement window menus in gnome-shell.
https://bugzilla.gnome.org/show_bug.cgi?id=726352
|
|
|
|
|
|
|
| |
Which has both directions set. This is a simple cleanup to
remove the constant VERTICAL | HORIZONTAL all over the place.
https://bugzilla.gnome.org/show_bug.cgi?id=726352
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently touch events are ignored in the core event handler,
and hence dealt with within GDK. If those touch events were
emulating pointer events, GDK would attempt to convert back
those events to pointer events as the frame GdkWindow doesn't
have the GDK_TOUCH_MASK set.
This results in XI_TouchBegin events being initially processed
by GDK, converted to button events, and triggering a grab op
that subverts touch events into pointer events, so the touch
is never ever seen again by GDK. This leaves GDK in an
inconsistent internal state wrt pointer grabs, so future
pointer-emulating touches will refer to the same window forever.
Fix this by handling touch events minimally, just enough to
convert XI_TouchBegin to GDK_BUTTON_PRESS within mutter, so GDK
is bypassed for every touch event just like it is for pointer
events. This, and the XIGrabDevice() that keeps coercing pointer
events when the grab operation starts, are enough to fix window
drag and drop on touch devices.
https://bugzilla.gnome.org/show_bug.cgi?id=723552
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We try to exempt CSD windows from being forced fullscreen if they are
undecorated and the size of the screen; however, we also catch almost
all windows that *do* need to be forced fullscreen in this check, since
they also have decorations turned off.
Identify actual CSD windows by checking whether _GTK_FRAME_EXTENTS is set -
GTK+ will always set this on CSD windows even if they have no invisible
borders or shadows at the current time.
https://bugzilla.gnome.org/show_bug.cgi?id=723029
|
|
|
|
|
|
|
| |
Make the code correspond to the comment - the titlebar can't be
offscreen if there's no titlebar.
https://bugzilla.gnome.org/show_bug.cgi?id=723580
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Needed for the call to gdk_x11_device_manager_lookup() introduced
in in the previous commit.
|
| |
|
| |
|
|
|
|
| |
Update NEWS.
|
|
|
|
|
|
| |
_SVID_SOURCE has been deprecated in newer versions of glibc breaking
-WError; the recommended replacement of _DEFAULT_SOURCE is fairly
new, so switch to _XOPEN_SOURCE instead.
|
|
|
|
|
|
|
|
|
|
| |
The "original coordinates" passed into meta_window_place() were the
coordinates of the client rectangle not the frame rectangle. When
meta_window_place() didn't place because the window was manually
positioned (e.g., 'xterm -geometry +x+y') that resulted in a window
being offset by the frame dimensions.
https://bugzilla.gnome.org/show_bug.cgi?id=724049
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since the introduction of frame sync in GTK+, updates to titlebar font and
colors haven't been working because GTK+ counts on the frame clock to
do style updates, and the frame clock doesn't run for an unmapped
GdkWindow. (It's possible that GtkStyleContext changes subsequent to
the introduction of the frame clock were also needed to fully break
things.)
We actually need to map the MetaFrames GdkWindow and let the
compositor code send out the frame sync messages in order to pick up
style changes.
Hopefully no bad side effects will occur from this - we make the window
override-redirect, 1x1, and outside the bounds of the screen.
https://bugzilla.gnome.org/show_bug.cgi?id=725751
|
| |
|
| |
|
|
|
|
|
|
| |
We need to resolve the keycode from the keysym again since the keycode
might have changed if there was a keymap switch between the grab and
the ungrab.
|
|
|
|
|
|
| |
Before starting to use display_get_keybinding() we could compare
MetaKeyBinding.modifiers with MetaKeyCombo.modifiers directly. Now, we
need to resolve the virtual modifiers to match with the mask.
|