- 24 Jul, 2014 1 commit
-
-
Carlos Garnacho authored
On X11 this works because only emulated pointer events are listened for. On wayland, the single touch behavior must be enforced in touch events, ignoring every other sequence. https://bugzilla.gnome.org/show_bug.cgi?id=733631
-
- 23 Jul, 2014 1 commit
-
-
Carlos Garnacho authored
This makes these functions more independent wrt touch vs pointer events https://bugzilla.gnome.org/show_bug.cgi?id=733631
-
- 14 Jul, 2014 6 commits
-
-
Jasper St. Pierre authored
When a Wayland window acks our arrangement and we don't really have anything to modify, we'll pass a sole flag of META_IS_WAYLAND_RESIZE to meta_window_move_resize_internal using a garbage rect. The existing code to calculate the new rectangle couldn't really handle this case, and so the garbage rectangle accidentally got stored. Revamp the flag checks to be more clear about it. This fixes the weird positioning issues that sometimes appear when resizing weston-terminal among others.
-
Jasper St. Pierre authored
Otherwise, Wayland windows will never get an icon.
-
Jasper St. Pierre authored
The implementation was just wrong. We now consider it an error to attach a NULL buffer to an xdg_surface. Users should destroy the surface properly.
-
Jasper St. Pierre authored
-
Jasper St. Pierre authored
All it does is poke a few fields. There is no point to it.
-
Jasper St. Pierre authored
This code was supposed to refresh our default icons when the theme changed, but it actually was a no-op, since the default icons are cached in a static variable in MetaUI. I'm not sure the fact that the fallback icons don't update when the theme changes is an important enough use case to keep working, but I'm keeping the skeleton function there in case somebody wants to actually fix it properly.
-
- 10 Jul, 2014 1 commit
-
-
Jasper St. Pierre authored
-
- 08 Jul, 2014 3 commits
-
-
Jasper St. Pierre authored
-
Jasper St. Pierre authored
This makes sure that we see them for Wayland clients as well, and don't time out and crash when we're accessing an invalid window / surface. Spotted-by:
Rui Matos <tiagomatos@gmail.com>
-
Jasper St. Pierre authored
-
- 07 Jul, 2014 1 commit
-
-
Jasper St. Pierre authored
Since Wayland configures are more of a hint to the client than anything, we don't want to save the unconstrained rect when we're just hinting to the client that it should resize, since it could ignore us. This would get us stuck in a loop, since meta_window_move_resize_now would use the unconstrained_rect to resize, and we don't remove the resize from the queue if we have an outstanding request like that. This fixes a bunch of traffic / CPU usage when trying to resize weston-terminal.
-
- 01 Jul, 2014 3 commits
-
-
Jasper St. Pierre authored
For XWayland, we need to make sure to send out mouse events on O-R windows, otherwise they won't get motion or button events. The comment mentions being eaten for the compositor, but we already bypass the compositor for all events that have a window. The return value just controls whether we pass them to Wayland.
-
Jasper St. Pierre authored
The output_id is more of an opaque identifier for the monitor, based on its underlying ID from the windowing system. Since we also use the term "output_id" for the output's index, rename our use of the opaque cookie "output_id" to "winsys_id".
-
Jasper St. Pierre authored
-
- 27 Jun, 2014 1 commit
-
-
Jasper St. Pierre authored
Specifically for CSD windows -- this was just absolutely wrong before. This fixes weird painting and clipping artifacts for CSD windows.
-
- 26 Jun, 2014 4 commits
-
-
Jasper St. Pierre authored
This is just a quick code cleanup.
-
Jasper St. Pierre authored
-
Jasper St. Pierre authored
-
Some plugins and extensions want to be able to know when the sticky field of a window changes, so add a property for it and allow them to connect to the notify::on-all-workspaces signal.
-
- 24 Jun, 2014 4 commits
-
-
Florian Müllner authored
When workspaces-only-on-primary is set and a window is moved back to the primary, we also move it to the active workspace to avoid the confusion of a visible window suddenly disappearing when crossing the monitor border. However when the window is not actually moved by the user, preserving the workspace makes more sense - we already do this in some cases (e.g. when moving between primary monitors), but miss others (unplugging the previous monitor); just add an explicit user_op parameter as used elsewhere to cover all exceptions. https://bugzilla.gnome.org/show_bug.cgi?id=731760
-
Florian Müllner authored
Remember the last monitor a window was moved to by user action and try to move it back on monitor changes; this should match user expectations much better when a monitor is unplugged temporarily. https://bugzilla.gnome.org/show_bug.cgi?id=731760
-
Florian Müllner authored
When workspaces-only-on-primary is set, a window can be on all workspaces either because it is on a non-primary workspace, or because it was explicitly made sticky. Only the latter is reflected in _NET_WM_STATE, but both will result in a "magic" _NET_WM_DESKTOP, which we (and probably other WMs) use to set the initial sticky state. So to avoid confusing other WMs (or ourselves), make sure to only have _NET_WM_STATE_STICKY reflected in _NET_WM_DESKTOP when unmanaging.
-
Florian Müllner authored
Window state like maximization and minimization should be preserved over restarts - in a patch review, this would qualify as "needs-work", so revert the cleanup until the issues are fixed. This reverts commit dc6decef.
-
- 17 Jun, 2014 3 commits
-
-
Jasper St. Pierre authored
This way, it's implemented as a special case in move_resize_internal, which makes it a lot easier to manage.
-
Jasper St. Pierre authored
Rather than calculate it speculatively with the current properties which may be too new or too out of date, make sure it always fits with the proper definition. We update it when we update the toplevel window for X11, and when a Wayland surface is committed with a newly attached buffer.
-
Jasper St. Pierre authored
With get_input_region existing, get_input_rect is a misnomer. Really, it's about the geometry of the output surface, and it's only used that way in the compositor code. Way back when in GNOME 3.2, get_input_rect was added when we added invisible borders. get_outer_rect was always synonymous with server-side geometry of the toplevel. get_outer_rect was used for both user-side policy (the "frame rect") and to get the geometry of the window. Invisible borders were meant to extend the input region of the frame window silently. Since most users of get_outer_rect cared about the frame rect, we kept that the same and added a new method, get_input_rect to get the full rect of the framed window with all invisible borders for input kept on. As time went on and CSD and Wayland became a reality, the relationship between the server-side geometry and the "frame rect" became more complicated, as can be evidenced by the recent commits. Since clients don't tend to be framed anymore, they set their own input region. get_buffer_rect is also sort of a poor name, since X11 doesn't really have buffers, but we don't really have many other alternatives. This doesn't change any of the code, nor the meaning. It will always refer to the rectangle where the toplevel should be placed.
-
- 16 Jun, 2014 2 commits
-
-
Jasper St. Pierre authored
All of the users of get_input_rect don't actually want a synthesized input rect based off of the current margins. What they really want is the last-configured size of the toplevel window. Since we don't properly track this anymore in the generic MetaWindow, use XGetWindowAttributes to fetch a server-side rectangle. This is a bad layer violation, but since the window geometry code will have to be rewritten anyway for the Wayland set_window_geometry, let's just push a hacky fix for now.
-
Jasper St. Pierre authored
-
- 12 Jun, 2014 2 commits
-
-
Jasper St. Pierre authored
-
Jasper St. Pierre authored
-
- 02 Jun, 2014 2 commits
-
-
Florian Müllner authored
When opening the window menu without an associated control - e.g. by right-clicking the titlebar or by keyboard - using coordinates for the menu position is appropriate. However when the menu is associated with a window button, the expected behavior in the shell can be implemented much easier with the full button geometry: the menu will point to the center of the button's bottom edge rather than align to the left/right side of the titlebar as it does now, and the clickable area where a release event does not dismiss the menu will match the actual clickable area in mutter. So add an additional show_window_menu_for_rect() function and use it when opening the menu from a button. https://bugzilla.gnome.org/show_bug.cgi?id=731058
-
Jasper St. Pierre authored
This can happen since we select for events on the root window, and clients themselves might not select for input, meaning the X server will bubble up. Just do nothing and ignore the event in this case. This should hopefully fix some of the Window manager warning: Log level 8: meta_window_raise: assertion '!window->override_redirect' failed Window manager warning: Log level 8: meta_window_focus: assertion '!window->override_redirect' failed spam that people have been seeing.
-
- 29 May, 2014 1 commit
-
-
Jasper St. Pierre authored
Since we often call meta_window_move_resize_now immediately after mapping a window, we need to make sure that the placed coordinates are saved in the unconstrained_rect. Ideally, placement positions wouldn't be part of the constraints system, but instead are just done inside meta_window_move_resize_internal as part of a special path. We're still working out the kinks of one large-scale refactor, so it's best not to do another one while the first is going on. This would be a great future cleanup, though: untangling constraints and placement, alongside the force_placement state machine and friends.
-
- 28 May, 2014 2 commits
-
-
Florian Müllner authored
The annotation has been deprecated in favor of (nullable) and/or (optional).
-
Jasper St. Pierre authored
This ensures sure that the initial ConfigureRequest we make is correct.
-
- 27 May, 2014 3 commits
-
-
Jasper St. Pierre authored
For Wayland, we want to have everything possible in terms of the frame rect, or "window geometry" as the Wayland protocol calls it, in order to properly eliminate some flashing when changing states to fullscreen or similar. For this, we need to heavily refactor how the code is structured, and make it so that meta_window_move_resize_internal is specified in terms of the frame rect coordinate space, and transforming all entry points to meta_window_move_resize_internal. This is a big commit that's hard to tear apart. I tried to split it as best I can, but there's still just a large amount of changes that need to happen at once. Expect some regressions from this. Sorry for any temporary regression that this might cause.
-
Jasper St. Pierre authored
Now that meta_window_move_resize and friends act in frame rect coordinates, we need to convert the initial grab_anchor_window_pos storage to be in frame rect coordinates as well.
-
Jasper St. Pierre authored
Move to meta_window_move_frame everywhere...
-