summaryrefslogtreecommitdiff
path: root/src/ui
AgeCommit message (Collapse)AuthorFilesLines
2019-06-16Only shadow ARGB windows with a frame outside the frameVictor Kareh3-68/+135
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-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-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 Kareh1-1/+0
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-16ui: Add meta_ui_update_frame_style()Victor Kareh3-0/+23
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-16MetaFrameBorders: Add meta_frame_borders_clearVictor Kareh4-34/+10
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 Kareh8-133/+96
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-16ui: always set the frame background to NoneGiovanni Campagna3-136/+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-01-31screen: Remove get_current_monitor in favor of get_current_xineramaVictor Kareh1-14/+4
Since xinerama already contains information on the monitor and its rectangle, there is no need to go through Gdk to get this information again.
2019-01-31Increase icon size on tab and workspace popupsVictor Kareh3-33/+47
Alt+Tab and Workspace popups should be sized relative to the monitor size. This way they look nice and large regardless of the display resolution. Also, given much larger modern resolutions, icon sizes should be larger by default.
2019-01-06frames.c: drop unused variablesPablo Barciela1-3/+0
2018-08-29theme: revert theme format version 3.6Alberts Muktupāvels1-3/+1
Shadow and padding was never part of theme. This format was created by mutter, and it is an incompatible change.
2018-08-28Convert frame region handling to cairo regionsOwen W. Taylor1-43/+79
It's useful to get frame shapes and manipulate them within Mutter, for example so that the compositor can use them to clip drawing. For this, we'll need the regions as cairo regions not X regions, so convert frame shaping code to work in terms of cairo_region_t. https://bugzilla.gnome.org/show_bug.cgi?id=635268
2018-08-28theme: add invisible_border to metacity themeAlberts Muktupāvels3-1/+11
This adds 'invisible_border' to metacity theme. This invisible border will be used for resize cursor area.
2018-08-28add support for app-menu button in themeAlberts Muktupāvels5-3/+56
Add app-menu button support in themes. This is done only to support metacity theme format 3.5 version. Marco will not show this button! Based on metacity commit: https://gitlab.gnome.org/GNOME/metacity/commit/6a2cc159
2018-08-28theme: replace mutter/metacity with marcoVictor Kareh3-3/+3
2018-08-28theme: Replace char array element comparisons with strncmpJasper St. Pierre1-19/+7
https://bugzilla.gnome.org/show_bug.cgi?id=662962
2018-08-28tabpopup.c: improveVictor Kareh1-32/+29
* Fix missing white border on outline window. * Do not create outline_window if we are not going to use it. Adapted from https://gitlab.gnome.org/GNOME/metacity/commit/a7dd0727
2018-08-28theme: Allow disabling fallback colors in gtk:custom()Florian Müllner1-4/+20
gtk:custom() requires a fallback color in case the GTK+ theme in use does not define the desired color. As in general the fallback color will approximate the intended color, there is the risk of typos going unnoticed. To make catching these kind of errors easier, allow to ignore the fallback color specified (and fall back to a nice shade of pink instead) by setting an environment variable. https://bugzilla.gnome.org/show_bug.cgi?id=656112
2018-08-28theme: Allow using custom colors from the GTK+ themeFlorian Müllner3-2/+96
Add an additional color type to pick up colors defined with @define-color in the GTK+ theme's CSS: gtk:custom(name,fallback) (where "name" refers to the name defined in GTK+'s CSS, and fallback refers to an alternative color spec which is used when the color referenced by "name" is not found) The main intent of the change is to allow designers to improve Adwaita's dark theme variant without having to compromise on colors which work in the light variant as well. https://bugzilla.gnome.org/show_bug.cgi?id=648709 NOTE: Patch copied from mutter and adapted for metacity.
2018-08-28theme: Add background functions for single buttonsFlorian Müllner3-22/+47
With the existing background functions, single buttons can not be styled separately - on the left side, the style of the left button is picked, and the right button's style on the right side. As theme authors may want to add rounded corners to button groups as a whole, it makes sense to treat the case of a single button in a group differently. https://bugzilla.gnome.org/show_bug.cgi?id=635683 NOTE: Patch copied from mutter and adapted for metacity.
2018-08-28theme-parser: Use peek_required_version() for validationFlorian Müllner1-3/+5
When validating button functions and frame styles, the required format version of the features used in the theme was compared to the major version number of the supported format, limiting additions to major theme format bumps. Use peek_required_version() instead, so the minor version number of the supported theme format is taken into account. https://bugzilla.gnome.org/show_bug.cgi?id=635683
2018-08-28Add frame type for attached modal dialogsOwen W. Taylor3-4/+19
Add a new frame type META_FRAME_TYPE_ATTACHED which is used for attached modal dialogs. The theme format version is bumped to 3.2, and attached windows can have borders defined in a metacity-theme-3.xml as: <window version=">= 3.2" type="attached" style_set="[name]"/> If no style is defined for "attached", drawing will fall back to the "border" type. https://bugzilla.gnome.org/show_bug.cgi?id=592382 NOTE: Patch copied from mutter and adapted for metacity.
2018-08-28Allow a theme to specify ellipsize width for a titleOwen W. Taylor4-3/+56
It's nice to indicate when a title is truncated with an ellipsis. Because themes may draw a title multiple times to draw a shadow, or may include the window icon within the title area, we can't determine the proper ellipsization width automatically, so add an optional attribute to the <title/> element "ellipsize_width" which, if set, is the width to ellipsize at. This is only enabled if a theme version of 3.1 is required. When it's not set, we keep the old behavior of just letting the title be clipped with a hard edge. https://bugzilla.gnome.org/show_bug.cgi?id=591842 NOTE: Patch copied from mutter and adapted for metacity.
2018-08-28Add frame_x_center/frame_y_center variables for themesOwen W. Taylor3-1/+19
Sometimes you want to position something (usually the title) to be centered with respect to the entire frame instead of centered with respect to the individual piece currently being drawn. This patch adds frame_x_center and frame_y_center variables that represent the X/Y centers of the frame in the coordinate system of the piece being drawn. The theme version is bumped from 3.0 to 3.1 (3.0 is just the new version system, 3.1 will have all the features we add for Mutter-2.28.) position expressions https://bugzilla.gnome.org/show_bug.cgi?id=591842 NOTE: Patch is copied from mutter and is adapted for metacity.
2018-08-28metacity-theme-3.xml: Add a flexible version mechanismOwen W. Taylor2-30/+246
The current mechanism of metacity-theme-1.xml and metacity-theme-2.xml is not flexible for allowing small-scale additions. With this patch we bump the major version version once more to metacity-theme-3.xml and add a single feature: Any element in the DTD can have an attribute: version="[<|<=|=>|>] MAJOR.MINOR" And it will be ignored unless the predicate is met. (< and > should be to be entity escaped as &lt; and &gt;) This allows having alternate sections of the theme file for older and newer version. * Required GLib version is bumped to 2.14 so we can parse versions with a regular expression. * We switch internal version numbers to be "1000 * major + minor" * We keep a stack of the maximum required version for the current portion the XML tree so that the "cannot use versions you don't require" stricture of the old code can be made local to a subpart of the tree. * A version on the top metacity_theme element causes the entire file to be ignored; this allows having one metacity-theme-3.xml for version 3.2 and newer (say) and a metacity-1.xml for everything old. Actual new features will be added starting with 3.1 - 3.0 is just the version="" feature. http://bugzilla.gnome.org/show_bug.cgi?id=592503 NOTE: Patch is copied from mutter and adapted for metacity. origin commit: https://gitlab.gnome.org/GNOME/metacity/commit/114a2048
2018-08-28theme-parser: Remove unused defineVictor Kareh1-19/+1
2018-04-29Correct resize popup position on HiDPI displaysVictor Kareh1-0/+8
2018-04-25Fix frame geometry to avoid stuck resize cursorVictor Kareh1-5/+0
2018-03-22Use frame window to determine scaleVictor Kareh1-1/+1
2018-03-22Support HiDPI window decorationsVictor Kareh5-49/+96
2018-02-16avoid deprecated GtkButton:use-stockPablo Barciela1-5/+2
2018-02-15avoid deprecated GtkStockPablo Barciela1-1/+6
2018-01-28require GTK+ 3.22 and GLib 2.50monsta4-43/+1
2017-12-20WidthOfScreen and HeightOfScreen implementationPablo Barciela2-9/+5
This commit reverts: https://github.com/mate-desktop/marco/commit/f0541e3dfda29c26fe14c9c9117f95c49006c75c https://github.com/mate-desktop/marco/commit/d18c2fb4acb58c408c01700682b9922de86e8b2f And it applies an alternative to fix the deprecated functions: gdk_screen_get_width gdk_screen_width gdk_screen_height
2017-08-22gtk 3.22: avoid deprecated gdk_screen_get_monitor... functions:ZenWalker1-0/+9
avoid deprecated: gdk_screen_get_monitor_geometry gdk_screen_get_monitor_at_point
2017-08-18avoid deprecated gdk_screen_width/heightZenWalker1-2/+6
2017-08-18avoid deprecated gdk_screen_get_widthZenWalker1-1/+3
2017-08-11Forces a window scale of 1 for the window manager, instead of using the ↵Martin Wimpress1-0/+5
default or user configured scale. Closes #335 (#336)
2017-07-29avoid deprecated gdk_display_get_screenZenWalker8-26/+15
2017-07-15avoid deprecated gdk_screen_get_numberZenWalker1-1/+1
2017-06-27ui: Fix invalid object construction in framesIkey Doherty1-4/+0
This legacy construct was carried over from the gtk2/gtk3 port, and attempts to initialise MetaFrames with a GtkWindow `type` property. This property doesn't actually exist, and will cause marco to completely crash when running with `MARCO_DEBUG=1` for local build testing. Signed-off-by: Ikey Doherty <[email protected]>
2017-04-23ui: avoid deprecated GdkDeviceManagerAlberts Muktupāvels1-0/+9
taken from: https://git.gnome.org/browse/metacity/commit/?id=7ec9a6f
2017-04-23tile-preview: avoid a deprecation warningAlberts Muktupāvels1-3/+4
Taken from: https://git.gnome.org/browse/metacity/commit/?id=3380502