Commit Graph

8134 Commits

Author SHA1 Message Date
Jasper St. Pierre
d4ea2bbd9c frames: Don't pass the width/height as separate args to get_client_rect
We already have them in the fgeom.
2015-01-01 11:04:11 -08:00
Jasper St. Pierre
f303ec2eaa core: Remove META_CORE_GET_FRAME_WIDTH / HEIGHT from documentation
It messes up my autocomplete.
2015-01-01 09:23:03 -08:00
Jasper St. Pierre
2ca4ed6b04 frames: Rename meta_frames_* to meta_ui_frame_* where appropriate 2014-12-31 22:52:50 -08:00
Jasper St. Pierre
a5ad89dd65 frames: Remove last_motion_frame
Nothing cares about it.
2014-12-31 22:46:48 -08:00
Jasper St. Pierre
4a4d724e59 frames: Remove dead declaration 2014-12-31 22:46:06 -08:00
Jasper St. Pierre
8fdbae192a frame: Start converting over to direct usage of MetaUIFrame 2014-12-31 22:44:20 -08:00
Jasper St. Pierre
2413e672c8 frame: Put a MetaUIFrame* in our MetaFrame
This is a small start, but it lets us start to clean up this
UI split mess.
2014-12-31 22:43:00 -08:00
Jasper St. Pierre
c8432cc430 frames: Use an early return
To be more consistent with the rest of the code.
2014-12-31 22:43:00 -08:00
Jasper St. Pierre
015864da09 frames: Embed a pointer to MetaFrames inside MetaUIFrame
This removes the MetaFrames argument from our internal APIs.
2014-12-31 22:35:35 -08:00
Jasper St. Pierre
669c9da2a4 frames: Fix astonishing accidental pointer trickery
Whenever we added a frame to the GHashTable, we added the frame itself
as the value, and a pointer to its storage of the frame window XID,
as the key.

When we iterated over the hash table, we actually looked up the
MetaUIFrame in the key, which might seem extraordinarily wrong, but
eagle-eyed viewers might notice that the XID is the first field in
MetaUIFrame, so the key and value are actually the same pointer.

Changing the layout of MetaUIFrame at all causes this to go haywire,
so let's not do this and simply put the MetaUIFrame in the value,
as expected.
2014-12-31 22:35:35 -08:00
Jasper St. Pierre
4d1d8e831e frames: Revert the logic here when the frame type updates
When the frame type updates, we were doing something funky that
caused us to reset the title used for the text layout here. I can't
really think of any place that it would trigger, and in testing I
haven't hit this either, so let's just remove the fancy logic and
assert this.
2014-12-31 22:35:30 -08:00
Jasper St. Pierre
9e199e6350 frames: Pass MetaFrameType into ensure_layout
All the callers already have it, so don't make us fetch it again.
2014-12-31 22:35:29 -08:00
Jasper St. Pierre
4673d8f245 theme: Remove flags argument from get_frame_layout
It's unused.
2014-12-31 22:35:29 -08:00
Jasper St. Pierre
90111c03a1 Only poke the frames UI code from inside frame.c
Add frame.c wrappers for the missing calls, then adapt.
2014-12-31 22:35:29 -08:00
Jasper St. Pierre
23681800d9 frame: Remove extra argument from sync_to_window 2014-12-31 22:35:29 -08:00
Jasper St. Pierre
b47afe89d3 ui: We now always have a theme 2014-12-31 22:35:29 -08:00
Jasper St. Pierre
af7f51b992 x11: Change the iconcache / window icons to being cairo surfaces
This simplifies the drawing codepath and makes us able to delete
a bunch of GdkPixbuf manipulation.
2014-12-31 21:11:21 -08:00
Jasper St. Pierre
f3d30d897f window: Refactor the default image lookup 2014-12-31 20:48:32 -08:00
Jasper St. Pierre
dcc4ce4ff4 core: Remove META_CORE_GET_ICON
It's unused.
2014-12-31 20:06:17 -08:00
Jasper St. Pierre
b9fb4a5887 backend: Use a GHashTable for device monitors
The array code has been tricky to maintain and leaky. Let's just use a
GHashTable to simplify our lives.
2014-12-31 08:53:57 -08:00
Jasper St. Pierre
d9985cd9bc libmutter: Only export meta_* symbols in the library
We also need ag_* symbols for testasyncgetprop.
2014-12-29 17:59:37 -08:00
Jasper St. Pierre
6e3f7b7ddc Update POTFILES.in 2014-12-29 17:47:29 -08:00
Jasper St. Pierre
2dd1f37820 Move the resizepopup to a compositor-side feature
This is the last big feature that requires X11 on Wayland, so let's just
trash it and make GNOME Shell reimplement it.
2014-12-29 17:44:41 -08:00
Jasper St. Pierre
57af975154 monitor-manager-dummy: Fill in connector_type 2014-12-29 17:15:23 -08:00
Jasper St. Pierre
c5940580ed monitor-manager: Use connector_type instead of name sniffing 2014-12-29 17:15:23 -08:00
Jasper St. Pierre
8296d4cdce monitor-config: Fix build 2014-12-29 17:15:23 -08:00
Piotr Drąg
bf9a00d5c9 Updated POTFILES.in 2014-12-30 02:12:24 +01:00
Jasper St. Pierre
c1db9d9181 monitor-config: Replace output name heuristics with connector_type
It's more difficult to replace the MetaOutputKey usage, so just
do this for now.
2014-12-29 16:46:06 -08:00
Jasper St. Pierre
9d2cd8ff87 monitor-config: Use existing key_is_laptop
We already have this code elsewhere.
2014-12-29 16:41:13 -08:00
Jasper St. Pierre
d514e8ab41 monitor-manager: Add a connector-type property
This is so gnome-settings-daemon
2014-12-29 16:30:54 -08:00
Rico Tzschichholz
44a60eb7e9 doc: Fix make dist 2014-12-29 19:38:49 +01:00
Florian Müllner
6b92b45021 theme: Move the layout we save closer to GTK+'s model
With support for the old metacity theme format gone, there's no
reason to keep storing theme information in terms of the old theme
properties. Just store the padding/border information for each
element directly.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:55:08 -08:00
Florian Müllner
ee461b5495 theme: Remove MetaFrameStyle/MetaFrameStyleSet
MetaFrameStyle now only holds a MetaFrameLayout, so we can cut out
the middle man and use the layout directly. And as we are already
using a single style/layout per frame set and handle frame state
and focus by setting appropriate style flags, MetaFrameStyleSet
is pointless too - just store one MetaFrameLayout per frame type
directly in the theme.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:55:08 -08:00
Florian Müllner
46f3eb0b71 theme: Remove MetaFrameResize
Really, styling windows differently based on how they can be resized
is over the top ...

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:54:57 -08:00
Florian Müllner
ef32899b4d frames: Rename layout to text_layout
... to differentiate PangoLayout from MetaFrameLayout.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:37 -08:00
Florian Müllner
5e9db422c9 Remove all support for the metacity format
Rest in peace you magnificent format, love-child of arcane X11 drawing
API and markup craze, you will not be missed.
We do remember however the bravery of a many men and women, who fearlessly
descended into the guts of your intrinsics and turned ugliness into beauty;
their work will still be spoken of when you will long have been forgotten.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:37 -08:00
Florian Müllner
662dd6a289 theme: Use a singleton theme
Different themes don't make sense when we are always using the current
GTK+ theme for everything, so adapt the MetaTheme API to use a singleton.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:37 -08:00
Florian Müllner
d5e6177900 theme: Don't load metacity themes
All geometry/drawing information is now picked up from the GTK+ theme,
so replace the remaining bits (hide_buttons + title_scale) with
hardcoded values from the default Adwaita theme and stop loading
the metacity theme altogether.
If there is a need to theme those constants again in the future,
we should make them available from GTK+ where they are available
for client-side decorations as well. They certainly don't justify
maintaining support for a complex theme format.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:37 -08:00
Florian Müllner
34ac80348c theme: Disable support for fringe buttons
Few themes ever had support for those in the first place, and even
less supported them properly; in particular support in the default
theme has been broken for a while now.
With this in mind (and considering that not even the tweak tool exposes
any UI to configure them), let's (try to) remove support altogether - the
corresponding rects are still kept around, so it's easy to add back in
case we reconsider (and get the necessary artwork).

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
8a7a01b0cf theme: Scale whitespace from theme with title_scale factor
GTK+ doesn't deal with different frame types for its client-side
decorations - it just treats dialogs the same as normal windows
and ignores the odder frame types like UTILITY and MENU. That's
fine as those have largely gone out of fashion anyway, but it's a
different case for the WM - we still have to support them somehow.
For now, just apply the existing title_scale factor to the geometry
information picked up from the theme in addition to the title font.
If it turns out that there's demand for something more sophisticated,
we can still consider adding wm-only style information to the GTK+
theme.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
2cabc067d1 frames: Adapt frame mask/bounds
The frame shape is relevant in three places:
 - the window decoration we draw
 - the frame mask (used for the shape region)
 - the frame bounds (used for clipping)

All three should match, so make sure to use the same GTK+ method for
the first two, and bring the (non-antialiased) third closer to the
other two by removing an obscure modifier from the corner radius.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
26c4c21e13 Properly update on GTK+ theme changes
With geometry information picked up from GTK+, we need to queue a
resize on GTK+ theme changes to correctly update to the new geometry.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
6eda784cf0 theme: Use style information from GTK+
We now have everything in place to pick up geometry and drawing
information from GTK+ rather than the metacity theme, so do just
that; the metacity theme is now only used for some constants
(title_scale, hide_buttons, ...), which we will replace soon.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
fb1459062f theme: Add function to fill geometry information from GTK+ theme
We want to eventually pick up all theme information from GTK+ instead
of our own theme format; to prepare for this, add another helper method
to fill in geometry information from the GTK+ theme.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
bc9547f29e theme: Add method to adjust styles for frame state
GTK+ expresses the window state as style classes and widget state for
client-side decorations. Add a helper method to translate our own frame
state to the corresponding changes to the style context hierarchy.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
89a371ec98 frames: Use title style to set up title layout
Sounds obvious, doesn't it?

After this change when titlebar-uses-system-font is set, the "system
font" used will not be a generic one, but match what GTK+ uses in
client-side decorations.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
2db71e73b4 theme: Build a StyleContext hierarchy that matches GTK+'s CSD
In order to pick up all theme information from GTK+, a single style
context is not enough; a style hierarchy that closely matches the widget
hierarchy by GTK+'s client-side decorations will allow this soon.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
472f2a4b8e theme: Add MetaStyleInfo for wrapping frame style context
Our current use of style contexts is fairly limited - we don't
use them for much more than picking up some color information.
We will soon start to make more elaborate use of GTK style
information, but a single context will no longer be enough
to draw a frame then.
To prepare for this, add a simple ref-counted type to wrap
style information.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
db04ac9eb7 theme: Add titlebar_spacing
Rather than defining the space to the left and right of buttons, add a
simple spacing property that defines the space between buttons, which is
what GTK+ does for client-side decorations (e.g. GtkButtons in a GtkBox).
Unfortunately the value is hardcoded in GTK+; if it is exposed in the
theme in the future, we should pick it up from there, but for now we
just use the same value as GTK+.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 08:46:36 -08:00
Florian Müllner
75105e254f theme: Rename button_rect() to get_button_rect()
Basically it's odd to have "button_rect" be a function with all the
foo_rect GdkRectangles around - renaming to get_button_rect() will
free the name for the generically named "rect" once buttons are the
only movable pieces in the frame.

https://bugzilla.gnome.org/show_bug.cgi?id=741917
2014-12-29 16:25:19 +01:00