summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Bump version to 3.13.33.13.3Florian Müllner2014-06-242-1/+14
| | | | Update NEWS.
* window: Add user_op parameter to update_monitor()Florian Müllner2014-06-243-16/+14
| | | | | | | | | | | | | 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
* window: Keep track of preferred outputFlorian Müllner2014-06-242-14/+35
| | | | | | | | 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
* window: Don't make windows on non-primaries sticky on restartFlorian Müllner2014-06-241-0/+7
| | | | | | | | | | 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.
* Revert "window: Move placement code from the constraints path"Florian Müllner2014-06-242-92/+125
| | | | | | | | 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 dc6decefb5cbd14d5ab059a59952fd96e86dc763.
* frames: Simplify the clip region calculationJasper St. Pierre2014-06-211-16/+4
| | | | | | | Since GTK+ already clips to the extended region for us, there's no need to combine the two. This does lose the fast-path, but I don't actually expect this to fire, as when we're composited, we really won't ever get partial exposes.
* frames: Don't bother painting the backgroundJasper St. Pierre2014-06-211-27/+0
| | | | GDK (and also GTK+!) do this for us already.
* frames: Hackily adapt to GTK+ drawing changesJasper St. Pierre2014-06-211-6/+18
| | | | | | mutter is quite bad at using GTK+ correctly, relying on dumb things like the single-buffering stuff. Hack up a temporary fix for the newer GTK+ rendering changes.
* Change shadow radiuses to match new Adwaita more or lessNikita Churaev2014-06-191-7/+7
| | | | | | Exact simmilarity is not possible yet due to different blurring algorithms. https://bugzilla.gnome.org/show_bug.cgi?id=731866
* compositor: Simplify meta_window_actor_set_updates_frozenJasper St. Pierre2014-06-175-17/+20
| | | | | Since we always call it with the same value, just push that value into the implementation.
* window: Move placement code from the constraints pathJasper St. Pierre2014-06-172-125/+92
| | | | | This way, it's implemented as a special case in move_resize_internal, which makes it a lot easier to manage.
* constraints: Clean up logical operationsJasper St. Pierre2014-06-171-3/+3
| | | | | The logical version of the bitwise XOR operator ^ is !=. I don't know why XOR was even used in the first place.
* window: Save the buffer_rect internallyJasper St. Pierre2014-06-174-18/+19
| | | | | | | | 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.
* window: Rename get_input_rect to get_buffer_rectJasper St. Pierre2014-06-174-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* window: Fix get_input_rect in a hacky wayJasper St. Pierre2014-06-161-0/+11
| | | | | | | | | | | | 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.
* window: Move get_toplevel_xwindow to window-x11Jasper St. Pierre2014-06-166-13/+15
|
* theme: Replace char array element comparisons with strncmpJasper St. Pierre2014-06-141-19/+7
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=662962
* theme: Remove dead codeJasper St. Pierre2014-06-141-212/+0
| | | | | | | | While the comment claims that we may want to keep this around for optimization purposes, the operations are raw bitmap operations that would be cleaner done in cairo. https://bugzilla.gnome.org/show_bug.cgi?id=662962
* theme: Properly indent codeJasper St. Pierre2014-06-141-24/+21
| | | | | | s/tabs/spaces/ https://bugzilla.gnome.org/show_bug.cgi?id=662962
* theme: Consolidate unused opsJasper St. Pierre2014-06-141-23/+7
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=662962
* theme: Remove unused RECTANGLE codeJasper St. Pierre2014-06-141-14/+0
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=662962
* display: Remove unused variableJasper St. Pierre2014-06-121-1/+0
|
* display: Use G_SOURCE_CONTINUE / G_SOURCE_REMOVEJasper St. Pierre2014-06-122-3/+3
|
* display: Use meta_window_has_pointer instead of XQueryPointerJasper St. Pierre2014-06-123-20/+6
|
* workspace: Extend builtin struts to screen edge when possibleFlorian Müllner2014-06-121-0/+39
| | | | | | | | | | | Struts are defined in terms of screen edges, so expand the rectangles we get via set_builtin_struts() accordingly. However we do want to allow chrome on edges between monitors, in which case the expansion would render an entire monitor unusable - don't expand the rectangles in that case, which means we will only use them for constraining windows but ignore them for the client-visible _NET_WORKAREA property. https://bugzilla.gnome.org/show_bug.cgi?id=730527
* testboxes: Update test casesFlorian Müllner2014-06-121-24/+18
| | | | | | Who cares? We do now ... https://bugzilla.gnome.org/show_bug.cgi?id=730527
* boxes: Ignore struts that don't attach to the side they claimFlorian Müllner2014-06-121-2/+25
| | | | | | | | | | | | | Like the _NET_WM_STRUT/_NET_WM_STRUT_PARTIAL client properties, _NET_WORKAREA is defined in terms of screen geometry rather than taking individual monitors into account. However we do want to allow system chrome to be attached to a monitor edge rather than a screen edges under some circumstances. As not all clients can be assumed to deal gracefully with the resulting workarea, use those "struts" only internally for constraining windows, but ignore them when exporting _NET_WORKAREA. https://bugzilla.gnome.org/show_bug.cgi?id=730527
* testboxes: Fix find_closest_point_to_line() testFlorian Müllner2014-06-121-4/+6
| | | | Eeeks, testing floating points for equality ...
* screen: Split workspace initialization from meta_screen_new()Florian Müllner2014-06-113-27/+37
| | | | | | | | | | | | | | Since commit 8b2b65246a86, we assume that the compositor always exists. Alas, the assumption is wrong - the compositor is currently initialized after the screen, but meta_screen_new() itself may call a compositor function if initialization involves a workspace switch (which will happen when meta_workspace_activate() is called more than once and for different workspaces - or in other words, when _NET_CURRENT_DESKTOP is set and not 0). So carefully split out the offending bits and only call them after the compositor has been initialized. https://bugzilla.gnome.org/show_bug.cgi?id=731332
* prefs: Queue change notification when app menu visibility changedFlorian Müllner2014-06-111-0/+6
| | | | | Toggling the option should have an immediate effect, not only on frame/state changes.
* native: Add a warp_pointer implementationJasper St. Pierre2014-06-112-9/+16
| | | | Use the new clutter_evdev_warp_pointer method to implement it.
* display: Fix the logic for moving attached dialogsJasper St. Pierre2014-06-111-12/+12
| | | | | | | | | | If we have a tree of a window, a non-attached dialog, and then an attached dialog, we want to move the second window, not the attached dialog or the topmost. In other words, we want to move the first non-attached window, or the first "freefloating window". This happens in Firefox, whose Preferences dialog is freefloating, but suboptions of those are modal dialogs.
* Move all X11 event processing to a new file in x11/Jasper St. Pierre2014-06-115-1783/+1858
|
* wayland-touch: Rearrange header slightlyJasper St. Pierre2014-06-111-5/+5
|
* wayland-pointer: Remove useless initializationJasper St. Pierre2014-06-111-2/+0
| | | | | | There is no way this value will ever be read, because we set the cursor_surface to NULL, this is set at the same time as cursor_surface, and it's only read if cursor_surface is non-NULL.
* wayland-surface: Subsurfaces start out in synchronous modeJasper St. Pierre2014-06-111-0/+1
|
* wayland-surface: Fix whitespaceJasper St. Pierre2014-06-111-4/+2
|
* Update .gitignoreJasper St. Pierre2014-06-111-9/+9
| | | | These aren't generated in the data/ subdir.
* meta-window-actor: Don't add shadows to popups if the toolkit already doesFlorian Müllner2014-06-101-2/+4
| | | | | | GTK+ will add its own shadows client-side, so we don't need to anymore. https://bugzilla.gnome.org/show_bug.cgi?id=731353
* shadow-factory: Make sure to never use a negative spreadFlorian Müllner2014-06-101-1/+6
| | | | | | | | The smallest possible spread corresponds to an unblurred shadow, which neither grows nor shrinks - thus the spread should be zero not negative as returned by our current calculation. https://bugzilla.gnome.org/show_bug.cgi?id=731353
* window-x11: Handle legacy fullscreen requestsFlorian Müllner2014-06-092-31/+27
| | | | | | | | Doing this on the actual resize requests makes more sense than handling it as a window-manager imposed constraints, so move the code accordingly. https://bugzilla.gnome.org/show_bug.cgi?id=730681
* constraints: Translate frame to client rect for legacy fullscreen checkFlorian Müllner2014-06-091-0/+5
| | | | | | | | | Stupid apps fullscreen themselves by resizing the client window to monitor size. A monitor-sized frame rect on the other hand is perfectly normal on monitors without struts - stop force-fullscreening those and catch the real baddies instead. https://bugzilla.gnome.org/show_bug.cgi?id=730681
* window-x11: Fix silly regressionFlorian Müllner2014-06-071-1/+1
| | | | First we figure out the window type, then we ignore it - ouch.
* configure.ac: Modernize autoconf/libtool dependencies and macro usageRico Tzschichholz2014-06-053-9/+10
|
* configure.ac: Group hard-dependencies together rather than split them upRico Tzschichholz2014-06-051-3/+5
|
* configure.ac: Drop obsolete shape/xsync confflagsRico Tzschichholz2014-06-051-10/+0
| | | | In addition to 20a0eb98096561c20c7162830118424d33880037
* meta: Add generated meta-version.hRico Tzschichholz2014-06-058-21/+54
| | | | | | Avoid populating *_VERSION constants through cflags in pkg-config-file which could be overridden by the project using it. Properly prefix the defines with META_ to make gi-scanner happy.
* build: Move data files to their dedicated subfolderRico Tzschichholz2014-06-0517-98/+59
|
* wayland: Implement the server side bits of wl_touch_interfaceCarlos Garnacho2014-06-047-3/+634
| | | | | | | | | | | | | | | | | | | Clutter touch events are translated into events being sent down the interface resource, with the exception of FRAME/CANCEL events, which are handled directly via an evdev event filter. The seat now announces invariably the WL_SEAT_CAPABILITY_TOUCH capability, this should be eventually updated as devices come and go. The creation of MetaWaylandTouchSurface structs is dynamic, attached to the lifetime of first/last touch on the client surface, and only if the surface requests the wl_touch interface. MetaWaylandTouchInfo structs are created to track individual touches, and are locked to a single MetaWaylandTouchSurface (the implicit grab surface) determined on CLUTTER_TOUCH_BEGIN. https://bugzilla.gnome.org/show_bug.cgi?id=724442
* build: Fix some warnings and clean up a bitRico Tzschichholz2014-06-045-26/+23
|