summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2019-06-16frame: make frame window transparentVictor Kareh1-6/+20
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/74db1f11
2019-06-16frames: apply shapes in different wayVictor Kareh3-4/+77
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/cd383e72
2019-06-16frames: add dest_kind to apply_cairo_region_to_windowVictor Kareh1-3/+4
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/94c8d620
2019-06-16frames: Fall back to title bar if nothing else matchedVictor Kareh1-1/+4
The condition got removed in eeb2efe01001fef7655b2ba95ca1456f7fe9214b but that had a side effect of adding a couple of rows of dead pixels so add it back. https://bugzilla.gnome.org/show_bug.cgi?id=658069 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/37e1fa8c
2019-06-16theme-viewer: Fix invisible bordersVictor Kareh2-10/+11
https://bugzilla.gnome.org/show_bug.cgi?id=662895 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/6836a621
2019-06-16window: Correct coordinates for the configure eventVictor Kareh1-4/+8
We should still correct the coordinates for withdrawn windows. upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/9da3004e
2019-06-16frame: Make sure to offset by invisible borders when unmanaging windowsVictor Kareh1-2/+5
When we reparent a window to the root when we're exiting, we need to offset the position by the invisible borders, otherwise windows will creep up and to the left. https://bugzilla.gnome.org/show_bug.cgi?id=660848 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/9fe51fd0
2019-06-16window: Fix _NET_FRAME_EXTENTS to work properlyVictor Kareh1-4/+7
_NET_FRAME_EXTENTS should contain the difference between where a window asked to be placed, and where it is. Ideally, this should be the same as the visible extents. https://bugzilla.gnome.org/show_bug.cgi?id=659848 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/a3630d7c
2019-06-16theme: don't add invisible borders for windows that can't be resizedVictor Kareh1-7/+14
Invisible borders are all about resizing -- in the case that a window cannot be resized, it makes no sense to add them. https://bugzilla.gnome.org/show_bug.cgi?id=659854 Based on mutter commit: https://git.gnome.org/browse/mutter/commit/?id=be9f7d77292c1dfd868640fe95f7223fbbfd4273 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/64615667
2019-06-16window: Fix window placement to exclude invisible bordersVictor Kareh1-4/+4
A window can specify geometry that it is placed at. We need to exclude invisible borders when calculating where to place the window, otherwise the window will have a strange offset. https://bugzilla.gnome.org/show_bug.cgi?id=659848 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/95373187
2019-06-16theme: Don't add any bottom border to shaded windowsVictor Kareh1-4/+4
Shaded windows are assumed to be reduced to the titlebar: the current code enforces a visible bottom border of 0 and only takes the size of the title bar (+ invisible top border) into account when resizing the frame. However, we still add an invisible border at the bottom, which is than subtracted from the title bar, resulting in shaded windows being cut off. Fix by forcing both visible and invisible bottom borders to 0. https://bugzilla.gnome.org/show_bug.cgi?id=659266 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/7a80fcfd
2019-06-16Account for invisible borders when constraining modal dialogsVictor Kareh1-1/+1
https://bugzilla.gnome.org/show_bug.cgi?id=656619 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/4674358f
2019-06-16compositor: fix shadow size and placementVictor Kareh1-6/+9
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/9fd053da
2019-06-16MetaWindow: Repurpose get_outer_rect and add get_input_rectVictor Kareh2-10/+50
get_outer_rect now returns the visible region, and a new get_input_rect method returns the boundaries of the full frame, including the possible invisible regions. When undecorated, both do the samething. https://bugzilla.gnome.org/show_bug.cgi?id=644930 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/dfedc7df
2019-06-16MetaWindow: Compensate for invisible border changesVictor Kareh1-20/+20
https://bugzilla.gnome.org/show_bug.cgi?id=644930 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/85e15225
2019-06-16ui: Replace inline borders in MetaFrameGeometry with MetaFrameBorderVictor Kareh3-172/+198
... and start compensating for invisible borders in all of the math. https://bugzilla.gnome.org/show_bug.cgi?id=644930 NOTE: Updated for marco... upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/daf6bc08
2019-06-16MetaFrameBorders: add invisible bordersVictor Kareh4-4/+29
This just adds the invisible border field and populates it with data but doesn't use it in any way. Based on mutter commit: https://git.gnome.org/browse/mutter/commit/?id=a1a2527c75ab0c135f89396ea036336fb67ac538 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/bf02c7c3
2019-06-16theme: add invisible_border to metacity themeVictor Kareh1-0/+5
This adds 'invisible_border' to be used for resize cursor area.
2019-06-16compositor: don't draw shadow under decorationsVictor Kareh1-54/+56
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/215dd8e9
2019-06-16compositor: add function to convert cairo region to xserver regionVictor Kareh1-0/+29
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/28970472
2019-06-16constraints: fix mem leak in meta_window_constrain()Victor Kareh1-3/+10
MetaFrameBorders leaked when orig_borders != NULL and window->fullscreen == TRUE https://bugzilla.gnome.org/show_bug.cgi?id=679153 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/7e7f25f4
2019-06-16MetaFrames: factor out MetaUIFrame accessors for borders, corner radiusesVictor Kareh1-15/+38
This makes it a bit simpler for other functions on a MetaUIFrame to get this information. Bug: https://bugzilla.gnome.org/show_bug.cgi?id=697758 Reviewed-by: Jasper St. Pierre <[email protected]> Signed-off-by: Simon McVittie <[email protected]> upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/79384de0
2019-06-16frame: Add "get_corner_radiuses" chainVictor Kareh6-0/+83
https://bugzilla.gnome.org/show_bug.cgi?id=628195 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/3994d7a0
2019-06-16frame: destroy window->frame_bounds when destroying the frameVictor Kareh1-0/+5
Since window->frame_bounds is used as a cache we need to invalidate it when destroying the frame. https://bugzilla.gnome.org/show_bug.cgi?id=660773 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/330ff9b5
2019-06-16Only shadow ARGB windows with a frame outside the frameVictor Kareh9-79/+203
An ARGB window with a frame is likely something like a transparent terminal. It looks awful (and breaks transparency) to draw a big opaque black shadow under the window, so clip out the region under the terminal from the shadow we draw. Add meta_window_get_frame_bounds() to get a cairo region for the outer bounds of the frame of a window, and modify the frame handling code to notice changes to the frame shape and discard a cached region. meta_frames_apply_shapes() is refactored so we can extract meta_frames_get_frame_bounds() from it. https://bugzilla.gnome.org/show_bug.cgi?id=635268 NOTE: Applied only partially, compositor part is still missing... upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/0f2e32d1
2019-06-16Fix XShapeVictor Kareh1-1/+1
Commit https://gitlab.gnome.org/GNOME/metacity/commit/c3a04bf unintentionally broke XShape handling. By studying the code extremely carefully, I found this inconsistency with the code that was there before. https://bugzilla.gnome.org/show_bug.cgi?id=635268 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/2b1c6443
2019-06-16compositor: don't draw shadow under windowsVictor Kareh3-11/+66
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/5404d8f2
2019-06-16constraints: initialize window->user_rect in initial placementVictor Kareh1-0/+1
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/67ddadf3
2019-06-16theme: Make meta_frame_draw_theme take a GtkStyleContext instead of a widgetVictor Kareh5-56/+21
The style context of the widget is rarely what we want. We won't fix this to be a MetaFrames style context yet; this just changes the internal API. https://bugzilla.gnome.org/show_bug.cgi?id=690317 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/76aa0704
2019-06-16remove common.cVictor Kareh3-35/+9
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/96d7a662
2019-06-16build everything as libraryVictor Kareh1-23/+11
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/d982d0a5
2019-06-16Allow raise_on_click to be set independent of focus_modeVictor Kareh2-6/+2
Based on a patch by Thomas Jaeger <[email protected]> upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/03e8e63d
2019-06-16window: initialize few variablesVictor Kareh1-0/+2
upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/5b880ff3
2019-06-16frames: Explicitly initialize style contextsVictor Kareh1-0/+1
We were relying on GTK+ emitting GtkWidget::style-updated during widget initialization to create the GtkStyleContexts used for window decorations. A recent GTK+ update broke this assumption, so do the necessary initialization ourselves. https://bugzilla.gnome.org/show_bug.cgi?id=671796 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/e4fde7b0
2019-06-16fix a crash-on-exitVictor Kareh1-0/+9
meta_frames_destroy() was not safe to be called multiple times, which was causing a crash on exit due to something else changing somewhere that makes it get called multiple times. https://bugzilla.gnome.org/show_bug.cgi?id=654489 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/e35be641
2019-06-16ui-frame: Add support for style variantsVictor Kareh2-4/+93
Rather than sharing a single style context between all frames, use a default style and one style per encountered variant. The value of the _GTK_THEME_VARIANT property should determine which style is attached to a particular frame, though for the time being the default style is used for every frame, as the window property cannot be accessed at the time the style is attached. This will be fixed in a later commit. https://bugzilla.gnome.org/show_bug.cgi?id=645355 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/04d8135f
2019-06-16ui-frames: Delay attaching the style to new framesVictor Kareh2-1/+4
Like the setting of new frames' background is delayed until the frame is associated with its window, delay attaching the initial style, so that the correct style variant is picked. https://bugzilla.gnome.org/show_bug.cgi?id=645355 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/ee056853
2019-06-16core: Update frame style when _GTK_THEME_VARIANT changesVictor Kareh1-0/+2
When the _GTK_THEME_VARIANT property changes, rather than just updating the window's theme_variant property, update its frame style as well, so that the window decoration reflects the requested variant. As the initial properties of a window may be read before its frame is created, there will be cases where the change is not picked up initially. https://bugzilla.gnome.org/show_bug.cgi?id=645355 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/8a779ab9
2019-06-16ui: Add meta_ui_update_frame_style()Victor Kareh4-0/+25
This method allows forcing a style update of a particular frame from the core, so that it can pick up style variants. https://bugzilla.gnome.org/show_bug.cgi?id=645355 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/97554dc4
2019-06-16core: Allow retrieving the theme variant via core_get()Victor Kareh2-0/+4
To associate frames with the correct style variant, the UI will need access to the window's theme variant property. https://bugzilla.gnome.org/show_bug.cgi?id=645355 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/5c7403cc
2019-06-16window: Parse _GTK_THEME_VARIANT propertyVictor Kareh4-0/+27
Since version 3.0, GTK+ has support for style variants. At the moment, themes may provide a dark variant, which can be requested by applications via GtkSettings. The requested variant is exported to X11 via the _GTK_THEME_VARIANT property - support this property, in order to pick up the correct style variant in the future. https://bugzilla.gnome.org/show_bug.cgi?id=645355 NOTE: Patch is adapted for marco. upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/341d0945
2019-06-16MetaFrameBorders: Add meta_frame_borders_clearVictor Kareh7-34/+49
Just a quick little commit to help clean things up for when we add invisible borders. Additionally, do a little housekeeping in preview-widget as well. https://bugzilla.gnome.org/show_bug.cgi?id=644930 NOTE: Patch copied from metacity and adapted for marco. upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/7d519b3f
2019-06-16Replace public MetaFrameGeometry with MetaFrameBordersVictor Kareh18-358/+295
There were actually *two* MetaFrameGeometry structs: one in theme-private.h, one in frame.h. The latter public struct was populated by a mix of (void*) casting and int pointers, usually pulling directly from the data in the private struct. Remove the public struct, replace it with MetaFrameBorders and scrap all the pointer hacks to populate it, instead relying on both structs being used in common code. This commit should be relatively straightforward, and it should not do any tricky logic at all, just a sophisticated find and replace. https://bugzilla.gnome.org/show_bug.cgi?id=644930 upstream commit: https://gitlab.gnome.org/GNOME/metacity/commit/72224a165 NOTE: Patch copied from metacity and adapted for marco.
2019-06-16frames: avoid deprecated 'gtk_widget_set_double_buffered'Pablo Barciela1-6/+17
based in the mutter commits: https://gitlab.gnome.org/GNOME/mutter/commit/b8b0dc5c78008647f5833f63d88456025f17bd08 https://gitlab.gnome.org/GNOME/mutter/commit/669c9da2a48d9a5573edee09065b8558c1d07035
2019-06-16window: avoid clang warning: garbage valuePablo Barciela1-9/+15
avoid Clang static analyzer warning: core/window.c:3580:34: warning: The right operand of '+' is a garbage value new_w = window->rect.width + fgeom.left_width + fgeom.right_width; ^ ~~~~~~~~~~~~~~~~
2019-06-16ui: always set the frame background to NoneGiovanni Campagna5-156/+12
This way the xserver never paints the frame background, even if the client window is destroyed. This allows us to have clean destroy window animation. There is no problem with interactive resizing because applications are using the XSync protocol, so we're not painting unless the client has redrawn. https://bugzilla.gnome.org/show_bug.cgi?id=734054 origin commit: https://gitlab.gnome.org/GNOME/metacity/commit/78c283c
2019-06-05libmetacity: use cairo to render gradientVictor Kareh2-58/+99
upstream commits: https://gitlab.gnome.org/GNOME/metacity/commit/71d5decc https://gitlab.gnome.org/GNOME/metacity/commit/127638ca https://gitlab.gnome.org/GNOME/metacity/commit/fc1a21ea https://gitlab.gnome.org/GNOME/metacity/commit/431e0418
2019-06-05gradient: sync code with mutter before it was removedVictor Kareh2-225/+280
upstream commits: https://gitlab.gnome.org/GNOME/metacity/commit/3932dca0 https://gitlab.gnome.org/GNOME/metacity/commit/10240013 https://gitlab.gnome.org/GNOME/metacity/commit/3fa97193
2019-04-24window: set atom__NET_WM_STATE_FOCUSED for meta_window_appears_focusedraveit651-1/+1
2019-04-24window: make docks and spashscreens appear focusedraveit651-1/+9
Set the NET_WM_STATE_FOCUSED property on windows of type dock or spashscreen so that they don't get the state GTK_STATE_FLAG_BACKDROP set by default. Based on: https://gitlab.gnome.org/GNOME/metacity/commit/b3ef887 origin xfwm4 commit: https://git.xfce.org/xfce/xfwm4/commit/?id=0feb29e78bb3