1
0
Fork 0
Commit graph

4301 commits

Author SHA1 Message Date
Jasper St. Pierre
91f35d6a01 wayland: Use standard SINCE version definitions 2014-05-12 17:01:00 -04:00
Jasper St. Pierre
4334135c52 events: Make sure to reset current_time after handling events
Otherwise, we'll have a stale value leftover in current_time that
won't be reset until the next event.
2014-05-09 11:51:28 -04:00
Jasper St. Pierre
03c4de5590 events: Set display->current_time when we start processing the event
Otherwise, the time will be refetched during processing.
2014-05-09 11:51:28 -04:00
Jasper St. Pierre
7a109a18af events: Move window button handling to window.c
Look at how clean GCD is now!!!
2014-05-08 15:34:27 -04:00
Jasper St. Pierre
d9b72b0f43 events: Clean up event replay code 2014-05-08 15:30:09 -04:00
Jasper St. Pierre
a7ea54bd7d events: Swallow all events directly on windows
This is how the X11 mode works.
2014-05-08 15:28:06 -04:00
Jasper St. Pierre
df642b96e2 events: Replace a switch statement with a simple if test 2014-05-08 15:28:06 -04:00
Jasper St. Pierre
f56cc1f733 events: Remove extra check for certain grab op
We already explicitly test that there's no grab op right below.
2014-05-08 15:28:06 -04:00
Jasper St. Pierre
f5bff4b7f3 events: Move the overlay_key_only_pressed handling to keybindings.c
Now the switch statement is entirely about window operations.
2014-05-08 15:28:06 -04:00
Jasper St. Pierre
bbfdf5dd2a events: Move keybindings event handling out of the giant switch 2014-05-08 15:28:06 -04:00
Jasper St. Pierre
9b95eda42a events: Remove an unnecessary check 2014-05-08 15:28:06 -04:00
Jasper St. Pierre
2d225a3386 events: Don't check if we have the grab to raise / focus a window
It isn't necessary. As an X11 compositor, we'll only see the event
if we have the grab on the window, anyway.

This was causing issues moving windows as a Wayland compositor.
2014-05-08 14:19:22 -04:00
Jasper St. Pierre
7b3cdc8f96 display: Correct check for grab_window_buttons
When we're a Wayland compositor, we get all the events, no exceptions,
so we don't need to grab.

This was masking focusing and raising issues under nested that showed
up under native.
2014-05-08 14:19:22 -04:00
Jonas Ådahl
b6f9500ccc wayland: Only send wl_output.scale event if supported by the client
'scale' was introduced in version 2, so only send such an event to
clients which has bound a new enough version of wl_output.

https://bugzilla.gnome.org/show_bug.cgi?id=729602
2014-05-07 22:09:30 +02:00
Giovanni Campagna
ea354e96cb xprops: free the text list content too
A text list is an array of pointers into a buffer. Freeing the
array is not enough, we need to free the buffer too.

https://bugzilla.gnome.org/show_bug.cgi?id=729732
2014-05-07 19:04:54 +02:00
Giovanni Campagna
098c8908ed MetaStackTracker: make sure all stack ops are freed eventually
If we apply a prediction immediately instead of queueing, we should
also free the operation immediately.
If we discard the prediction queue because we resync fully, we
need to free each operation too.

https://bugzilla.gnome.org/show_bug.cgi?id=729732
2014-05-07 19:04:54 +02:00
Giovanni Campagna
ab632e36a5 default: free the option context after parsing
We don't need it, we should free it.

https://bugzilla.gnome.org/show_bug.cgi?id=729732
2014-05-07 19:04:54 +02:00
Giovanni Campagna
1427d20922 MetaDisplay: free the wayland windows table at close
Like we do for the XID table.

https://bugzilla.gnome.org/show_bug.cgi?id=729732
2014-05-07 19:04:54 +02:00
Giovanni Campagna
aed671810c MetaIdleMonitorDBus: unref the objects after exporting them
The object manager already has a reference.

https://bugzilla.gnome.org/show_bug.cgi?id=729732
2014-05-07 19:04:54 +02:00
Jasper St. Pierre
324d7d720d keybindings: Don't mark a replayed keypress event as handled
This is needed so it goes to Wayland clients.
2014-05-07 09:30:22 -04:00
Jasper St. Pierre
413e39ecbb keybindings: Fix <Super> key crash
If we exit early as not handled, then the normal process_event
handler will fire, and trigger the overlay-key binding. As that's
a special binding that doesn't have a handler, trying to trigger
that handler will crash mutter.

Instead of returning early, just check for xdisplay every time
we try to drive the X grab state machine. We really need a better
solution for this on the Wayland side.
2014-05-07 09:30:21 -04:00
Giovanni Campagna
2ca2c18c2a MetaMonitorConfig: don't always restore the previous config when opening the 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
2014-05-06 21:28:41 +02:00
Giovanni Campagna
01cd4b2ba0 MetaMonitorConfig: don't keep a previous config with the wrong outputs
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
2014-05-06 21:27:50 +02:00
Jasper St. Pierre
bca210db45 Revert "Update to latest xdg-shell protocol"
This reverts commit fd5c14550a.

Again, pushed by accident, whoops.
2014-05-05 19:09:07 -04:00
Jasper St. Pierre
66d6f73af2 Revert "ui: Remove maybe_redirect_mouse_event"
This reverts commit 6c7a51378f.

It seems we still have issues with GDK's grab tracking getting confused.
That's unfortunate.
2014-05-05 19:06:57 -04:00
Jasper St. Pierre
bc8799d7d7 constraints: Complete fix for size hints constrainment 2014-05-05 19:06:56 -04:00
Jasper St. Pierre
fd5c14550a Update to latest xdg-shell protocol 2014-05-05 14:15:03 -04:00
Jasper St. Pierre
a5cca5296c window: Make sure not to eat any events that end grab ops
We need to send the button press / button release that ended a grab
op to Wayland clients so their tracking don't get confused.
2014-05-05 14:15:03 -04:00
Jasper St. Pierre
f4ef4b79f9 constraints: Size increments need to be applied to the client rect
Not the frame rect.
2014-05-05 13:10:01 -04:00
Jasper St. Pierre
6c7a51378f ui: Remove maybe_redirect_mouse_event
There's no cross-talk between grabs now that the backend fully manages
input properly.
2014-05-04 16:38:38 -04:00
Jasper St. Pierre
9c4908b44a xwayland: Don't crash when the window disappears from under us
If we attach to a MetaWindow that disappears before the idle fires,
we'll notice that we can't associate the window properly again and
try to access data on the MetaWindow struct, which might crash.

Install a weak ref that ties the lifetime of the idle to the lifetime
of the MetaWindow.

It seems every GTK+ app does this for some reason at startup. This
is really unfortunate, since we'll have to create and destroy a new
MetaWindow really quickly.
2014-05-04 15:51:53 -04:00
Jasper St. Pierre
afaab8aef2 wayland-surface: Fix warnings 2014-05-04 15:33:38 -04:00
Jasper St. Pierre
845fdda22c keybindings: Make sure not to call meta_change_keygrab under Wayland 2014-05-03 12:50:19 -04:00
Adel Gadllah
fa29a1a99e Fix last commit
Actually do the changes from the review ... pushed old version of the
patch :/
2014-05-03 12:00:27 +02:00
Adel Gadllah
f9bffae9fd wayland: Scale native surfaces for hidpi
Scale surfaces based on output scale and the buffer scale set by them.
We pick the scale factor of the monitor there are mostly on.

We only handle native i.e non xwayland / legacy clients yet.

https://bugzilla.gnome.org/show_bug.cgi?id=728902
2014-05-03 10:11:55 +02:00
Adel Gadllah
31c925c602 wayland: Add basic hidpi support
Advertise the scale factor on the output and transform pointer and damage
events as well as input and opaque regions for clients
that scale up by themselves i.e use set_buffer_scale.

We do not scale any 'legacy' apps yet.

https://bugzilla.gnome.org/show_bug.cgi?id=728902
2014-05-03 10:11:51 +02:00
Jasper St. Pierre
5d310e06ba display: Remove some more unnecessary NULL checks
Instead, replace them with another assert precondition.
2014-05-02 09:37:01 -04:00
Jasper St. Pierre
25a16c3379 Remove trailing whitespace 2014-05-02 09:34:48 -04:00
Florian Müllner
a6601e92aa display: Don't grab transient's parent unconditionally
Since commit 6e8d1d79d, move operations are always performed for
the (toplevel) parent of all transient, which is just plain silly
if the dialog is not actually attached to its parent (either because
the dialog is not modal or the setting is disabled).
2014-05-02 12:27:39 +02:00
Jasper St. Pierre
f3a2bb7779 window: Clean up old_rect handling a tiny bit
We need the old rect for two purposes: to find the x/y in a resize-only
action, and to pass into the constraints code for nefarious purposes.

The constraints code takes a frame rectangle, so we convert the original
client rect into a frame rect, but never convert it back since it's
unused for the rest of the function.

Instead of playing games with the variables, just have two,
separately-scoped variables. One is the client rect, the other is the
frame rect.
2014-05-01 19:50:39 -04:00
Jasper St. Pierre
73e2d7049a window: Rearrange code a tiny bit 2014-05-01 19:50:38 -04:00
Jasper St. Pierre
a6353944f6 constraints: Remove a lie
The orig / new now are about the frame rect, not the inner window
rect.
2014-05-01 19:50:38 -04:00
Jasper St. Pierre
43d6088ebb window: Change meta_window_move_resize_internal to take a MetaRectangle
We construct one anyway, and most callers already pass in a rectangle
the long way around, so why not change the internal API?
2014-05-01 19:13:33 -04:00
Jasper St. Pierre
e3001794f2 window-x11: Clean up formatting a bit more 2014-05-01 19:11:17 -04:00
Jasper St. Pierre
e97ca325e6 window-x11: Clean up a bit 2014-05-01 19:10:48 -04:00
Jasper St. Pierre
c9c6645284 window-x11: Fix a copy/paste error
We need to use the explicitly passed-in gravity here, rather
than the window's existing gravity.
2014-05-01 19:09:36 -04:00
Jasper St. Pierre
57bb297450 window-wayland: Fix interactive resizing from the top/left once more
Ugh. So in the fullscreen case, we need to make sure to specify that
it's a MOVE_ACTION so that we move to the saved position, but we
can't do that in the resizing case since we need to use the resized
rectangle.

The flags are really hurting us here. Perhaps we should make it the
client's responsibility to specify a complete rectangle which we
could resize to; then the weird-o logic would be self-contained in
each front-end.

I'm not convinced this covers all cases, especially when we could have
a dangling weird state pointer, but it fixes our existing two testcases.
2014-05-01 18:59:17 -04:00
Jasper St. Pierre
06ca99c3a3 window: Remove some ugly debug logging 2014-05-01 17:59:50 -04:00
Jasper St. Pierre
4b5593c67f window: Make the x/y position in the requested_rect more accurate
For gravity-based resizing, we need to make sure that the requested
rectangle has the proper x/y position given by the gravity resize,
rather than the bogus root_x_nw / root_y_nw parameter.

Make the test for this more explicit.
2014-05-01 17:59:50 -04:00
Jasper St. Pierre
acb3dc6754 window: Move adjust_for_gravity to window-x11
This removes the weirdness about which edge cases are where in the
move_resize_internal API, and we now always pass in client top-left
coordinates.
2014-05-01 17:59:49 -04:00
Jasper St. Pierre
4c21a46452 window: Move the session restoration and post-manage move_resize to window-x11 2014-05-01 17:59:49 -04:00
Jasper St. Pierre
900ae2c1fa window: Remove the borders parameter from adjust_for_gravity
We can simply use the existing cached borders.
2014-05-01 17:59:49 -04:00
Jasper St. Pierre
01b6445708 window: Simplify adjust_for_gravity 2014-05-01 17:59:49 -04:00
Jasper St. Pierre
292d502205 window: Fix typo in comment 2014-05-01 17:59:49 -04:00
Jasper St. Pierre
adf2e44a82 core: Remove a few unused meta_core functions 2014-05-01 17:59:48 -04:00
Jasper St. Pierre
d456e68375 keybindings: Fix another place we unfreeze on the wrong xdisplay 2014-04-30 09:32:51 -04:00
Jasper St. Pierre
03efa3ccbc keybindings: Make sure to unfreeze the keyboard on the right xdisplay
This fixes keybindings getting "stuck" after being activated in
X11 compositor mode.
2014-04-30 09:32:51 -04:00
Jasper St. Pierre
2101c8357b Move sync_request_* handling mostly to window-x11 2014-04-29 17:58:23 -04:00
Jasper St. Pierre
575963bee7 window: Turn grab_op_begin / grab_op_ended into vfuncs
And move the grab_resize_popup management to the X11 window class,
as this is only used under X11.
2014-04-29 17:58:22 -04:00
Jasper St. Pierre
7726001d43 window: Simplify resize_popup handling 2014-04-29 17:58:22 -04:00
Jasper St. Pierre
e382a4b560 window: Replace manual switch statement for a resizing grab op 2014-04-29 17:58:22 -04:00
Jasper St. Pierre
70713cc7db window: Add some hooks for when grab ops begin / end on windows 2014-04-29 17:58:22 -04:00
Jasper St. Pierre
417090f3fa window: Remove some superfluous uses of window->xwindow 2014-04-29 17:58:21 -04:00
Jasper St. Pierre
9fcc57cdec core: Remove unused function 2014-04-29 17:58:21 -04:00
Jasper St. Pierre
7bf0c77193 window: Move _NET_WM_ALLOWED_ACTIONS setting to window-x11 as well 2014-04-29 17:58:21 -04:00
Jasper St. Pierre
f2328f1105 window: Move meta_window_move_resize_request to window-x11 2014-04-29 17:58:21 -04:00
Florian Müllner
d9a2443e53 Fix crash when cursor theme lookup failed
meta_cursor_reference_from_theme() may return %NULL on failure,
in which case we currently crash when trying to release it.
2014-04-29 22:20:03 +02:00
Jasper St. Pierre
b773898a60 window-wayland: Fix resizing from the top/left once more
Restoring the position in our move_resize_internal implementation
is too late. We need to do it at ack-time, before we hand off the
new position to the constraints code.
2014-04-28 18:22:55 -04:00
Jasper St. Pierre
8461b2c910 window: Move move_resize_wayland to window-wayland.c
The move/resize logic is still busted for top/left resizes... sigh.
2014-04-28 18:22:55 -04:00
Jasper St. Pierre
9b760dbbab window: Remove unused condition
IS_WAYLAND_RESIZE will always result in a RESIZED result, at least.
2014-04-28 18:22:55 -04:00
Jasper St. Pierre
8b0747786a window: Move X11 struts implementation to X11 codepath 2014-04-28 17:34:33 -04:00
Jasper St. Pierre
41235fcb86 keybindings: Remove now-unused meta_screen_grab_all_keys 2014-04-28 17:34:33 -04:00
Jasper St. Pierre
1d5b4e5b2f display: Remove the same checks in end_grab_op 2014-04-28 17:34:32 -04:00
Jasper St. Pierre
6e8d1d79d1 display: Make sure to retrieve the toplevel transient for
If we have multiple modal stacked dialogs, move the top one, not
the immediate parent, which heavily confuses mutter.
2014-04-28 17:34:32 -04:00
Jasper St. Pierre
7cefe91c3c display: Fix tiling when grabbing an attached dialog
It seems we used the wrong variable by accident
2014-04-28 17:34:32 -04:00
Jasper St. Pierre
1ef6a5542a display: Remove extraneous checks for grab_window
We assert a few lines down anyway, so just move the asserts up
and kill the if statement.
2014-04-28 17:34:32 -04:00
Jasper St. Pierre
bc0f7def47 display: Clean up whitespace 2014-04-28 17:34:31 -04:00
Jasper St. Pierre
f0175d1234 window: Don't reset pending_compositor_effect too early
With our surface_mapped strategy, implement_showing might not
change whether the window has been shown or not, and thus we
might end up clearing pending_compositor_effect before the window
is mapped.

Only clear pending_compositor_effect when the effect has actually
been used.
2014-04-28 16:59:34 -04:00
Jasper St. Pierre
eb0c4db46d keyboard: Don't use a grab interface for sending key events 2014-04-28 16:30:51 -04:00
Jasper St. Pierre
19e97ec567 keyboard: Remove start_grab / end_grab
It's unused.
2014-04-28 16:30:50 -04:00
Jasper St. Pierre
ce5c029509 window-wayland: Make sure to save where the position for server-initiated resizes
For the server-initiated resize case, like unmaximize or some forms
of tiling, we dropped the x/y of the server-assigned rectangle on the
floor, which meant the surface didn't move to where it needed to be in
that case. Now, save it internally, and combine it with the dx/dy passed
in during attaches to figure out where we actually need to be.

Make sure to only use it for when we send out a configure notify. We
should use the passed in rectangle for other scenarios, like a
client-initiated resize.

This fixes incorrect surface placement after unmaximization.
2014-04-28 16:23:38 -04:00
Jasper St. Pierre
647743aa5f Revert "window-wayland: Don't enter the only-moving path for Wayland
resizes"

We're going to use the old code structure now.

This reverts commit 23ae11043f.
2014-04-28 16:23:38 -04:00
Jasper St. Pierre
e94f169d4e Revert "window-wayland: Make sure to save where the position for server-initiated resizes"
This is wrong for client-initiated resizes now.

This reverts commit e6b0525c70.
2014-04-28 16:23:38 -04:00
Jasper St. Pierre
e6b0525c70 window-wayland: Make sure to save where the position for server-initiated resizes
For the server-initiated resize case, like unmaximize or some forms
of tiling, we dropped the x/y of the server-assigned rectangle on the
floor, which meant the surface didn't move to where it needed to be in
that case. Now, save it internally, and combine it with the dx/dy passed
in during attaches to figure out where we actually need to be.

This fixes incorrect surface placement after unmaximization.
2014-04-28 16:11:10 -04:00
Jasper St. Pierre
23ae11043f window-wayland: Don't enter the only-moving path for Wayland resizes
We'll be adding additional code here for "correct" moving soon, so
we need to make sure not to do it for Wayland resizes.
2014-04-28 16:11:09 -04:00
Jasper St. Pierre
78657dafca window-wayland: Clean up a bit 2014-04-28 16:11:09 -04:00
Jasper St. Pierre
0f47eae33a window-wayland: Split an if statement in two 2014-04-28 16:11:09 -04:00
Jasper St. Pierre
2209eac2bf constraints: Make meta_window_constrain take window geometry rects
Remove extend_by_frame and unextend_by_frame. Use a dumb hack in
window.c to translate into window geometry in back. We'll soon track
all rectangles in MetaWindow in terms of the window geometry.
2014-04-28 16:11:09 -04:00
Jasper St. Pierre
aed6d4fbb7 default: Remove the maximize effect
It looks awful, and doesn't work with Wayland at all for some
reason, which means that maximize seems to "hang" for half a
second. Just trash it.
2014-04-28 15:20:49 -04:00
Jasper St. Pierre
270c7abd3c default: Remove the unmaximize implementation
It does nothing.
2014-04-28 15:20:48 -04:00
Jasper St. Pierre
e2bd15541b default: Remove unused internal state tracking 2014-04-28 15:20:48 -04:00
Jasper St. Pierre
9607513e62 backend-x11: Fix cursor position under nested 2014-04-28 13:29:45 -04:00
Jasper St. Pierre
18730f2a5e backend-x11: Take grabs on the stage window
This means that grabs will be reported with respect to the
stage window, and that our event coordinates will be more
correct under nested.
2014-04-28 13:29:31 -04:00
Adel Gadllah
4e584c2cf0 display: Don't call x11 backend code when running native
https://bugzilla.gnome.org/show_bug.cgi?id=729044
2014-04-27 20:24:15 +02:00
Jasper St. Pierre
d1619e4f53 wayland-pointer: Remove the conditional around the surface actor too
The actor should always exist.
2014-04-27 10:39:19 -04:00
Adel Gadllah
c8d0a66921 wayland-surface: Ignore bufferless damage
Instead of letting a buggy client kill us.
2014-04-27 16:18:09 +02:00
Adel Gadllah
dd4d6af185 wayland-surface: Only call process_damage when we have any damage
This fixes a crash when a client commits a surface
without attaching a buffer.
2014-04-27 16:12:02 +02:00
Adel Gadllah
657318d4d3 meta-wayland-pointer: Remove the surface->window conditional 2014-04-25 20:38:24 +02:00
Adel Gadllah
f051e05b0a meta-wayland-pointer: Transform coordinates relative to the surface_actor
Not the window_actor ..
2014-04-25 20:36:46 +02:00
Rico Tzschichholz
ca75513880 prefs: Add center-new-windows setting 2014-04-25 15:26:24 +02:00