mirror of
https://github.com/brl/mutter.git
synced 2024-11-24 17:10:40 -05:00
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
This commit is contained in:
parent
662dd6a289
commit
5e9db422c9
@ -22,7 +22,6 @@
|
|||||||
<title>Mutter Core Reference</title>
|
<title>Mutter Core Reference</title>
|
||||||
<xi:include href="xml/main.xml"/>
|
<xi:include href="xml/main.xml"/>
|
||||||
<xi:include href="xml/common.xml"/>
|
<xi:include href="xml/common.xml"/>
|
||||||
<xi:include href="xml/gradient.xml"/>
|
|
||||||
<xi:include href="xml/prefs.xml"/>
|
<xi:include href="xml/prefs.xml"/>
|
||||||
<xi:include href="xml/util.xml"/>
|
<xi:include href="xml/util.xml"/>
|
||||||
<xi:include href="xml/errors.xml"/>
|
<xi:include href="xml/errors.xml"/>
|
||||||
|
@ -172,15 +172,6 @@ meta_error_trap_push_with_return
|
|||||||
meta_error_trap_pop_with_return
|
meta_error_trap_pop_with_return
|
||||||
</SECTION>
|
</SECTION>
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>gradient</FILE>
|
|
||||||
MetaGradientType
|
|
||||||
meta_gradient_create_simple
|
|
||||||
meta_gradient_create_multi
|
|
||||||
meta_gradient_create_interwoven
|
|
||||||
meta_gradient_add_alpha
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
<SECTION>
|
||||||
<FILE>group</FILE>
|
<FILE>group</FILE>
|
||||||
MetaGroup
|
MetaGroup
|
||||||
|
@ -1,394 +0,0 @@
|
|||||||
Themes are in a simple XML-subset format. There are multiple versions
|
|
||||||
of the theme format, and a given theme can support more than one format.
|
|
||||||
|
|
||||||
Version 1: THEMEDIR/metacity-1/metacity-theme-1.xml
|
|
||||||
(original metacity format)
|
|
||||||
Version 2: THEMEDIR/metacity-1/metacity-theme-2.xml
|
|
||||||
Version 3: THEMEDIR/metacity-1/metacity-theme-3.xml
|
|
||||||
|
|
||||||
The subdirectory name is "metacity-1" in all versions.
|
|
||||||
|
|
||||||
As you might expect, older versions of metacity will not understand
|
|
||||||
newer theme formats. However, newer versions will use old themes.
|
|
||||||
Metacity will always use the newest theme format it understands that
|
|
||||||
the X server supports. Some format versions are only supported if you
|
|
||||||
have the right X server features.
|
|
||||||
|
|
||||||
Each format *requires* the corresponding filename. If you put version
|
|
||||||
2 format features in the metacity-1/metacity-theme-1.xml file, then
|
|
||||||
metacity will get angry.
|
|
||||||
|
|
||||||
This document has separate sections for each format version. You may
|
|
||||||
want to read the document in reverse order, since the base features
|
|
||||||
are discussed under version 1.
|
|
||||||
|
|
||||||
New Features in Theme Format Version 3.4
|
|
||||||
========================================
|
|
||||||
|
|
||||||
An additional color type is added to pick up custom colors defined
|
|
||||||
in the GTK+ theme's CSS:
|
|
||||||
|
|
||||||
gtk:custom(name,fallback)
|
|
||||||
|
|
||||||
where <name> refers to a custom color defined with @define-color in
|
|
||||||
the GTK+ theme, and <fallback> provides an alternative color definition
|
|
||||||
in case the color referenced by <name> is not found.
|
|
||||||
|
|
||||||
New Features in Theme Format Version 3.3
|
|
||||||
========================================
|
|
||||||
|
|
||||||
Add two additional button background functions - left_single_background and
|
|
||||||
right_single_background - for button groups with just a single button.
|
|
||||||
|
|
||||||
There are now additional frame states to style left/right tiled windows
|
|
||||||
differently ("tiled_left", "tiled_right", "tiled_left_and_shaded",
|
|
||||||
"tiled_right_and_shaded").
|
|
||||||
|
|
||||||
New Features in Theme Format Version 3.2
|
|
||||||
========================================
|
|
||||||
|
|
||||||
A new window type 'attached' is added for modal dialogs which are
|
|
||||||
attached to their parent window. (When the attach_modal_dialogs preference
|
|
||||||
is turned on.) If no style is defined for the 'attached' window type,
|
|
||||||
the 'border' window type will be used instead.
|
|
||||||
|
|
||||||
New Features in Theme Format Version 3.1
|
|
||||||
========================================
|
|
||||||
|
|
||||||
Additional predefined variables are added for positioning expressions:
|
|
||||||
|
|
||||||
frame_x_center: the X center of the entire frame, with respect to the
|
|
||||||
piece currently being drawn.
|
|
||||||
frame_y_center: the Y center of the entire frame, with respect to the
|
|
||||||
piece currently being drawn.
|
|
||||||
|
|
||||||
The <title/> element now supports an "ellipsize_width" attribute. When
|
|
||||||
specified, this gives a width at which to ellipsize the title. If not
|
|
||||||
specified, the title will simply be clipped to the title area.
|
|
||||||
|
|
||||||
New Features in Theme Format Version 3
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Format version 3 has exactly one new feature; any element in the file
|
|
||||||
can now have a version attribute:
|
|
||||||
|
|
||||||
version="[<|<=|=>|>] MAJOR.MINOR"
|
|
||||||
|
|
||||||
(< and > should be to be entity escaped as < and >). If this
|
|
||||||
version check is not met, then the element and its children will be
|
|
||||||
ignored. This allows having alternate sections of the theme file for
|
|
||||||
older and newer version of the Metacity theme format.
|
|
||||||
|
|
||||||
When placed on the toplevel <metacity_theme> element, an unsatisfied
|
|
||||||
version check will not just cause the contents of the file to be
|
|
||||||
ignored, it will also cause the lookup of a theme file to proceed on
|
|
||||||
and look for an older format 2 or format 1 file. This allows making a
|
|
||||||
metacity-theme-3.xml file that is only used the format version 3.2 or
|
|
||||||
newer is supported, and using metacity-theme-1.xml for older window
|
|
||||||
managers.
|
|
||||||
|
|
||||||
New Features in Theme Format Version 2
|
|
||||||
======================================
|
|
||||||
|
|
||||||
The optional attributes rounded_top_left, rounded_top_right,
|
|
||||||
rounded_bottom_left and rounded_bottom_right on <frame_geometry>
|
|
||||||
should now be the radius of the corner in pixels. You may still use
|
|
||||||
the values "false" for 0 and "true" for 5, which means v1 values will
|
|
||||||
still work just fine.
|
|
||||||
|
|
||||||
<frame_geometry> has a new optional attribute, hide_buttons. If this
|
|
||||||
is true, no buttons will be displayed on the titlebar.
|
|
||||||
|
|
||||||
Anywhere you can use a positive integer, you can use an integer constant.
|
|
||||||
|
|
||||||
As well as constant integers and reals, you may define constant colours,
|
|
||||||
thus:
|
|
||||||
<constant name="RevoltingPink" value="#FF00FF"/>
|
|
||||||
<constant name="Background" value="gtk:bg[NORMAL]"/>
|
|
||||||
|
|
||||||
<frame_style> has two new optional attributes, background and alpha.
|
|
||||||
If you specify alpha, you must specify background. background is a
|
|
||||||
colour used for the background of the frame. alpha is the transparency
|
|
||||||
as a real between 0.0 and 1.0. If the current X server does not support
|
|
||||||
alpha channels, the value is ignored.
|
|
||||||
|
|
||||||
The filename attribute of <image> may begin with "theme:". If so, the
|
|
||||||
rest of the string is the name of a theme icon. The 64x64 version of the
|
|
||||||
icon is used, except for fallback mini_icons, which use the 16x16 version.
|
|
||||||
This does not affect ordinary resizing. For example:
|
|
||||||
<button function="close" state="normal">
|
|
||||||
<draw_ops>
|
|
||||||
<include name="active_button"/>
|
|
||||||
<image filename="theme:gnome-logout" x="2" y="2"
|
|
||||||
width="width-4" height="height-4"/>
|
|
||||||
<!-- Note: not "theme:gnome-logout.png" or similar. -->
|
|
||||||
</draw_ops>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<menu_icon>s are parsed but ignored.
|
|
||||||
|
|
||||||
Fallback icons can be specified using <fallback>. There are two
|
|
||||||
optional arguments, icon and mini_icon. The values of these arguments
|
|
||||||
are identical to that of the filename attribute of <image>. Fallback
|
|
||||||
icons are used when a window does not supply its own icon. If a fallback
|
|
||||||
icon is not specified with <fallback>, Metacity will use a built-in
|
|
||||||
icon, as in metacity-theme-1.
|
|
||||||
|
|
||||||
The <arc> element, as well as the original start_angle and end_angle
|
|
||||||
attributes, may be given from and to attributes. The values of these
|
|
||||||
attributes are given in degrees clockwise, with 0 being straight up.
|
|
||||||
For example:
|
|
||||||
<arc from="0.0" to="90.0" filled="true" color="#FF00FF"
|
|
||||||
x="0" y="5" width="15" height="15"/>
|
|
||||||
|
|
||||||
<frame state="shaded"> may now take an optional resize attribute, with
|
|
||||||
the same interpretation as the resize attribute on <frame state="normal">.
|
|
||||||
If this attribute is omitted for state="shaded", it defaults to "both".
|
|
||||||
(If it is omitted for state="normal", it remains an error.)
|
|
||||||
|
|
||||||
In addition to the four <button> functions which are required in
|
|
||||||
metacity-theme-1, there are six new functions in metacity-theme-2:
|
|
||||||
shade, unshade, above, unabove, stick and unstick.
|
|
||||||
|
|
||||||
Overview of Theme Format Version 1
|
|
||||||
==================================
|
|
||||||
|
|
||||||
<?xml version="1.0"?>
|
|
||||||
<metacity_theme>
|
|
||||||
<!-- Only one info section is allowed -->
|
|
||||||
<info>
|
|
||||||
<name>Foo</name>
|
|
||||||
<author>Foo P. Bar</author>
|
|
||||||
<copyright>whoever, 2002</copyright>
|
|
||||||
<date>Jan 31 2005</date>
|
|
||||||
<description>A sentence about the theme.</description>
|
|
||||||
</info>
|
|
||||||
|
|
||||||
<!-- define a frame geometry to be referenced later -->
|
|
||||||
<!-- frame_geometry has an optional has_title attribute which
|
|
||||||
determines whether the title text height is included in the
|
|
||||||
height calculation. if not specified, defaults to true.
|
|
||||||
It also has an optional text_size="medium" attribute
|
|
||||||
(same sizes as with Pango markup, xx-small thru medium thru
|
|
||||||
xx-large)
|
|
||||||
|
|
||||||
Finally it has optional args rounded_top_left=true,
|
|
||||||
rounded_top_right=true, rounded_bottom_left=true,
|
|
||||||
rounded_bottom_right=true.
|
|
||||||
|
|
||||||
-->
|
|
||||||
<frame_geometry name="normal" has_title="true" title_scale="medium">
|
|
||||||
<distance name="left_width" value="6"/>
|
|
||||||
<distance name="right_width" value="6"/>
|
|
||||||
<distance name="bottom_height" value="7"/>
|
|
||||||
<distance name="left_titlebar_edge" value="6"/>
|
|
||||||
<distance name="right_titlebar_edge" value="6"/>
|
|
||||||
<distance name="button_width" value="17"/>
|
|
||||||
<distance name="button_height" value="17"/>
|
|
||||||
<!-- alternative to button_width button_height distances -->
|
|
||||||
<aspect_ratio name="button" value="1.0"/>
|
|
||||||
<distance name="title_vertical_pad" value="4"/>
|
|
||||||
<border name="title_border" left="3" right="12" top="4" bottom="3"/>
|
|
||||||
<border name="button_border" left="0" right="0" top="1" bottom="1"/>
|
|
||||||
</frame_geometry>
|
|
||||||
|
|
||||||
<!-- inheritance is allowed; simply overwrites values from parent -->
|
|
||||||
<frame_geometry name="borderless" parent="normal">
|
|
||||||
<distance name="left_width" value="0"/>
|
|
||||||
<distance name="right_width" value="0"/>
|
|
||||||
<distance name="bottom_height" value="0"/>
|
|
||||||
<distance name="left_titlebar_edge" value="0"/>
|
|
||||||
<distance name="right_titlebar_edge" value="0"/>
|
|
||||||
</frame_geometry>
|
|
||||||
|
|
||||||
<!-- define a constant to use in positions/sizes of draw operations;
|
|
||||||
constant names must start with a capital letter.
|
|
||||||
-->
|
|
||||||
<constant name="LineOffset" value="3"/>
|
|
||||||
|
|
||||||
<!-- define drawing operations to be referenced later;
|
|
||||||
these draw-op lists can also be placed inline.
|
|
||||||
|
|
||||||
Positions/lengths are given as expressions.
|
|
||||||
Operators are: +,-,*,/,%,`max`,`min`
|
|
||||||
All operators are infix including `max` and `min`,
|
|
||||||
i.e. "2 `max` 5"
|
|
||||||
|
|
||||||
Some variables are predefined, and constants can also
|
|
||||||
be used. Variables are:
|
|
||||||
|
|
||||||
width - width of target area
|
|
||||||
height - height of target area
|
|
||||||
object_width - natural width of object being drawn
|
|
||||||
object_height - natural height of object being drawn
|
|
||||||
left_width - distance from left of frame to client window
|
|
||||||
right_width - distance from right of frame to client window
|
|
||||||
top_height - distance from top of frame to client window
|
|
||||||
bottom_height - distance from bottom of frame to client window
|
|
||||||
mini_icon_width - width of mini icon for window
|
|
||||||
mini_icon_height - height of mini icon
|
|
||||||
icon_width - width of large icon
|
|
||||||
icon_height - height of large icon
|
|
||||||
title_width - width of title text
|
|
||||||
title_height - height of title text
|
|
||||||
|
|
||||||
All these are always defined, except object_width/object_height
|
|
||||||
which only exists for <image> right now.
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
<draw_ops name="demo_all_ops">
|
|
||||||
<line color="#00FF00" x1="LineOffset" y1="0" x2="0" y2="height"/>
|
|
||||||
<line color="gtk:fg[NORMAL]"
|
|
||||||
x1="width - 1" y1="0" x2="width - 1" y2="height"
|
|
||||||
width="3" dash_on_length="2" dash_off_length="3"/>
|
|
||||||
<rectangle color="blend/gtk:fg[NORMAL]/gtk:bg[NORMAL]/0.7"
|
|
||||||
x="0" y="0" width="width - 1" height="height - 1" filled="true"/>
|
|
||||||
<arc color="dark gray" x="0" y="0" width="width - 1" height="height - 1"
|
|
||||||
filled="false" start_angle="30" extent_angle="180"/>
|
|
||||||
<tint color="orange" alpha="0.5" x="0" y="0" width="width" height="height"/>
|
|
||||||
<!-- may be vertical, horizontal, diagonal -->
|
|
||||||
<gradient type="diagonal"
|
|
||||||
x="10" y="30" width="width / 3" height="height / 4">
|
|
||||||
<!-- any number of colors allowed here. A color can be
|
|
||||||
a color name like "blue" (look at gcolorsel), a hex color
|
|
||||||
as in HTML (#FFBB99), or a color from the gtk theme
|
|
||||||
given as "gtk:base[NORMAL]", "gtk:fg[ACTIVE]", etc.
|
|
||||||
-->
|
|
||||||
<color value="gtk:fg[SELECTED]"/>
|
|
||||||
<!-- color obtained by a 0.5 alpha composite of the second color onto the first -->
|
|
||||||
<color value="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.5"/>
|
|
||||||
</gradient>
|
|
||||||
<image filename="foo.png" alpha="0.7"
|
|
||||||
x="10" y="30" width="width / 3" height="height / 4"/>
|
|
||||||
<gtk_arrow state="normal" shadow="in" arrow="up"
|
|
||||||
filled="true"
|
|
||||||
x="2" y="2" width="width - 4" height="height - 4"/>
|
|
||||||
<gtk_box state="normal" shadow="out"
|
|
||||||
x="2" y="2" width="width - 4" height="height - 4"/>
|
|
||||||
<gtk_vline state="normal" x="2" y1="0" y2="height"/>
|
|
||||||
<!-- window's icon -->
|
|
||||||
<icon alpha="0.7"
|
|
||||||
x="10" y="30" width="width / 3" height="height / 4"/>
|
|
||||||
<!-- window's title -->
|
|
||||||
<title color="gtk:text[NORMAL]" x="20" y="30"/>
|
|
||||||
<!-- include another draw ops list; has optional x/y/width/height attrs -->
|
|
||||||
<include name="some_other_draw_ops"/>
|
|
||||||
<!-- tile another draw ops list; has optional
|
|
||||||
x/y/width/height/tile_xoffset/tile_yoffset -->
|
|
||||||
<tile name="some_other_draw_ops" tile_width="10" tile_height="10"/>
|
|
||||||
</draw_ops>
|
|
||||||
|
|
||||||
<frame_style name="normal" geometry="normal">
|
|
||||||
<!-- How to draw each piece of the frame.
|
|
||||||
For each piece, a draw_ops can be given inline or referenced
|
|
||||||
by name. If a piece is omitted, then nothing will be drawn
|
|
||||||
for that piece.
|
|
||||||
|
|
||||||
For each piece, the "width" and "height" variables in
|
|
||||||
coordinate expressions refers to the dimensions of the piece,
|
|
||||||
the origin is at the top left of the piece.
|
|
||||||
|
|
||||||
So <rectangle x="0" y="0" width="width-1" height="height-1"/>
|
|
||||||
will outline a piece.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<piece position="entire_background" draw_ops="demo_all_ops"/>
|
|
||||||
<piece position="left_titlebar_edge">
|
|
||||||
<draw_ops>
|
|
||||||
<line color="#00FF00" x1="0" y1="0" x2="0" y2="height"/>
|
|
||||||
</draw_ops>
|
|
||||||
</piece>
|
|
||||||
|
|
||||||
<!-- The complete list of frame pieces:
|
|
||||||
|
|
||||||
entire_background: whole frame
|
|
||||||
titlebar: entire area above the app's window
|
|
||||||
titlebar_middle: area of titlebar_background not considered
|
|
||||||
part of an edge
|
|
||||||
left_titlebar_edge: left side of titlebar background
|
|
||||||
right_titlebar_edge: right side of titlebar background
|
|
||||||
top_titlebar_edge: top side of titlebar background
|
|
||||||
bottom_titlebar_edge: bottom side of titlebar background
|
|
||||||
title: the title area (doesn't include buttons)
|
|
||||||
left_edge: left edge of the frame
|
|
||||||
right_edge: right edge of the frame
|
|
||||||
bottom_edge: bottom edge of the frame
|
|
||||||
overlay: same area as entire_background, but drawn after
|
|
||||||
drawing all sub-pieces instead of before
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- For buttons, drawing methods have to be provided for
|
|
||||||
each of three states:
|
|
||||||
normal, pressed, prelight
|
|
||||||
and the button function or position must be provided:
|
|
||||||
close, maximize, minimize, menu,
|
|
||||||
left_left_background, left_middle_background,
|
|
||||||
left_right_background, right_left_background,
|
|
||||||
right_middle_background, right_right_background
|
|
||||||
So a working theme needs 3*4 = 12 button declarations
|
|
||||||
and a theme may have up to 3*10 = 30 button declarations
|
|
||||||
in order to handle button-rearrangement preferences.
|
|
||||||
|
|
||||||
(The name "function" for the attribute is from before the
|
|
||||||
background values existed.)
|
|
||||||
-->
|
|
||||||
|
|
||||||
<button function="close" state="normal" draw_ops="previously_named"/>
|
|
||||||
<button function="menu" state="normal">
|
|
||||||
<draw_ops>
|
|
||||||
<icon alpha="0.7"
|
|
||||||
x="0" y="0" width="object_width" height="object_height"/>
|
|
||||||
</draw_ops>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</frame_style>
|
|
||||||
|
|
||||||
<!-- styles can inherit from each other with the parent="" attribute.
|
|
||||||
In a subclass anything can be re-specified to override
|
|
||||||
the parent style. -->
|
|
||||||
<frame_style name="focused" parent="normal">
|
|
||||||
<piece position="title">
|
|
||||||
<draw_ops>
|
|
||||||
<rectangle color="gtk:bg[SELECTED]"
|
|
||||||
x="0" y="0" width="width-1" height="height-1"/>
|
|
||||||
<title color="gtk:fg[SELECTED]" x="(width - title_width) / 2"
|
|
||||||
y="(height - title_height) / 2"/>
|
|
||||||
</draw_ops>
|
|
||||||
</piece>
|
|
||||||
</frame_style>
|
|
||||||
|
|
||||||
<!-- Maps styles to states of frame.
|
|
||||||
|
|
||||||
Focus: yes (focused), no (not focused)
|
|
||||||
Window states: normal, maximized, shaded, maximized_and_shaded
|
|
||||||
Window resizability: none, vertical, horizontal, both
|
|
||||||
|
|
||||||
Everything unspecified just does the same as
|
|
||||||
unfocused/normal/both.
|
|
||||||
|
|
||||||
only state="normal" needs a resize="" attribute.
|
|
||||||
-->
|
|
||||||
<frame_style_set name="normal">
|
|
||||||
<frame focus="yes" state="normal" resize="both" style="focused"/>
|
|
||||||
<frame focus="no" state="normal" resize="both" style="normal"/>
|
|
||||||
</frame_style_set>
|
|
||||||
|
|
||||||
<!-- Each window type needs a style set
|
|
||||||
Types: normal, dialog, modal_dialog, menu, utility, border
|
|
||||||
-->
|
|
||||||
<window type="normal" style_set="normal"/>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- For menu icons, drawing methods are needed for the same
|
|
||||||
four types as the buttons, and GTK states
|
|
||||||
(insensitive,prelight,normal,etc.)
|
|
||||||
-->
|
|
||||||
|
|
||||||
<menu_icon function="close" state="normal" draw_ops="previously_named"/>
|
|
||||||
|
|
||||||
|
|
||||||
</metacity_theme>
|
|
||||||
|
|
||||||
|
|
@ -200,7 +200,6 @@ libmutter_la_SOURCES = \
|
|||||||
ui/frames.h \
|
ui/frames.h \
|
||||||
ui/resizepopup.c \
|
ui/resizepopup.c \
|
||||||
ui/resizepopup.h \
|
ui/resizepopup.h \
|
||||||
ui/theme-parser.c \
|
|
||||||
ui/theme.c \
|
ui/theme.c \
|
||||||
meta/theme.h \
|
meta/theme.h \
|
||||||
ui/theme-private.h \
|
ui/theme-private.h \
|
||||||
|
@ -82,7 +82,6 @@ static GDesktopFocusNewWindows focus_new_windows = G_DESKTOP_FOCUS_NEW_WINDOWS_S
|
|||||||
static gboolean raise_on_click = TRUE;
|
static gboolean raise_on_click = TRUE;
|
||||||
static gboolean center_new_windows = FALSE;
|
static gboolean center_new_windows = FALSE;
|
||||||
static gboolean attach_modal_dialogs = FALSE;
|
static gboolean attach_modal_dialogs = FALSE;
|
||||||
static char* current_theme = NULL;
|
|
||||||
static int num_workspaces = 4;
|
static int num_workspaces = 4;
|
||||||
static GDesktopTitlebarAction action_double_click_titlebar = G_DESKTOP_TITLEBAR_ACTION_TOGGLE_MAXIMIZE;
|
static GDesktopTitlebarAction action_double_click_titlebar = G_DESKTOP_TITLEBAR_ACTION_TOGGLE_MAXIMIZE;
|
||||||
static GDesktopTitlebarAction action_middle_click_titlebar = G_DESKTOP_TITLEBAR_ACTION_LOWER;
|
static GDesktopTitlebarAction action_middle_click_titlebar = G_DESKTOP_TITLEBAR_ACTION_LOWER;
|
||||||
@ -144,7 +143,6 @@ static void queue_changed (MetaPreference pref);
|
|||||||
static void maybe_give_disable_workarounds_warning (void);
|
static void maybe_give_disable_workarounds_warning (void);
|
||||||
|
|
||||||
static gboolean titlebar_handler (GVariant*, gpointer*, gpointer);
|
static gboolean titlebar_handler (GVariant*, gpointer*, gpointer);
|
||||||
static gboolean theme_name_handler (GVariant*, gpointer*, gpointer);
|
|
||||||
static gboolean mouse_button_mods_handler (GVariant*, gpointer*, gpointer);
|
static gboolean mouse_button_mods_handler (GVariant*, gpointer*, gpointer);
|
||||||
static gboolean button_layout_handler (GVariant*, gpointer*, gpointer);
|
static gboolean button_layout_handler (GVariant*, gpointer*, gpointer);
|
||||||
static gboolean overlay_key_handler (GVariant*, gpointer*, gpointer);
|
static gboolean overlay_key_handler (GVariant*, gpointer*, gpointer);
|
||||||
@ -401,14 +399,6 @@ static MetaStringPreference preferences_string[] =
|
|||||||
mouse_button_mods_handler,
|
mouse_button_mods_handler,
|
||||||
NULL,
|
NULL,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
{ "theme",
|
|
||||||
SCHEMA_GENERAL,
|
|
||||||
META_PREF_THEME,
|
|
||||||
},
|
|
||||||
theme_name_handler,
|
|
||||||
NULL,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
{ KEY_TITLEBAR_FONT,
|
{ KEY_TITLEBAR_FONT,
|
||||||
SCHEMA_GENERAL,
|
SCHEMA_GENERAL,
|
||||||
@ -1309,12 +1299,6 @@ meta_prefs_get_show_fallback_app_menu (void)
|
|||||||
return show_fallback_app_menu;
|
return show_fallback_app_menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char*
|
|
||||||
meta_prefs_get_theme (void)
|
|
||||||
{
|
|
||||||
return current_theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
meta_prefs_get_cursor_theme (void)
|
meta_prefs_get_cursor_theme (void)
|
||||||
{
|
{
|
||||||
@ -1371,29 +1355,6 @@ titlebar_handler (GVariant *value,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
|
||||||
theme_name_handler (GVariant *value,
|
|
||||||
gpointer *result,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
const gchar *string_value;
|
|
||||||
|
|
||||||
*result = NULL; /* ignored */
|
|
||||||
string_value = g_variant_get_string (value, NULL);
|
|
||||||
|
|
||||||
if (!string_value || !*string_value)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (g_strcmp0 (current_theme, string_value) != 0)
|
|
||||||
{
|
|
||||||
g_free (current_theme);
|
|
||||||
current_theme = g_strdup (string_value);
|
|
||||||
queue_changed (META_PREF_THEME);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
mouse_button_mods_handler (GVariant *value,
|
mouse_button_mods_handler (GVariant *value,
|
||||||
gpointer *result,
|
gpointer *result,
|
||||||
@ -1818,9 +1779,6 @@ meta_preference_to_string (MetaPreference pref)
|
|||||||
case META_PREF_RAISE_ON_CLICK:
|
case META_PREF_RAISE_ON_CLICK:
|
||||||
return "RAISE_ON_CLICK";
|
return "RAISE_ON_CLICK";
|
||||||
|
|
||||||
case META_PREF_THEME:
|
|
||||||
return "THEME";
|
|
||||||
|
|
||||||
case META_PREF_TITLEBAR_FONT:
|
case META_PREF_TITLEBAR_FONT:
|
||||||
return "TITLEBAR_FONT";
|
return "TITLEBAR_FONT";
|
||||||
|
|
||||||
|
@ -43,7 +43,6 @@
|
|||||||
* @META_PREF_AUTO_RAISE: auto-raise
|
* @META_PREF_AUTO_RAISE: auto-raise
|
||||||
* @META_PREF_AUTO_RAISE_DELAY: auto-raise delay
|
* @META_PREF_AUTO_RAISE_DELAY: auto-raise delay
|
||||||
* @META_PREF_FOCUS_CHANGE_ON_POINTER_REST: focus change on pointer rest
|
* @META_PREF_FOCUS_CHANGE_ON_POINTER_REST: focus change on pointer rest
|
||||||
* @META_PREF_THEME: theme
|
|
||||||
* @META_PREF_TITLEBAR_FONT: title-bar font
|
* @META_PREF_TITLEBAR_FONT: title-bar font
|
||||||
* @META_PREF_NUM_WORKSPACES: number of workspaces
|
* @META_PREF_NUM_WORKSPACES: number of workspaces
|
||||||
* @META_PREF_DYNAMIC_WORKSPACES: dynamic workspaces
|
* @META_PREF_DYNAMIC_WORKSPACES: dynamic workspaces
|
||||||
@ -81,7 +80,6 @@ typedef enum
|
|||||||
META_PREF_AUTO_RAISE,
|
META_PREF_AUTO_RAISE,
|
||||||
META_PREF_AUTO_RAISE_DELAY,
|
META_PREF_AUTO_RAISE_DELAY,
|
||||||
META_PREF_FOCUS_CHANGE_ON_POINTER_REST,
|
META_PREF_FOCUS_CHANGE_ON_POINTER_REST,
|
||||||
META_PREF_THEME,
|
|
||||||
META_PREF_TITLEBAR_FONT,
|
META_PREF_TITLEBAR_FONT,
|
||||||
META_PREF_NUM_WORKSPACES,
|
META_PREF_NUM_WORKSPACES,
|
||||||
META_PREF_DYNAMIC_WORKSPACES,
|
META_PREF_DYNAMIC_WORKSPACES,
|
||||||
@ -128,7 +126,6 @@ GDesktopFocusMode meta_prefs_get_focus_mode (void);
|
|||||||
GDesktopFocusNewWindows meta_prefs_get_focus_new_windows (void);
|
GDesktopFocusNewWindows meta_prefs_get_focus_new_windows (void);
|
||||||
gboolean meta_prefs_get_attach_modal_dialogs (void);
|
gboolean meta_prefs_get_attach_modal_dialogs (void);
|
||||||
gboolean meta_prefs_get_raise_on_click (void);
|
gboolean meta_prefs_get_raise_on_click (void);
|
||||||
const char* meta_prefs_get_theme (void);
|
|
||||||
/* returns NULL if GTK default should be used */
|
/* returns NULL if GTK default should be used */
|
||||||
const PangoFontDescription* meta_prefs_get_titlebar_font (void);
|
const PangoFontDescription* meta_prefs_get_titlebar_font (void);
|
||||||
int meta_prefs_get_num_workspaces (void);
|
int meta_prefs_get_num_workspaces (void);
|
||||||
|
@ -34,10 +34,4 @@ MetaTheme* meta_theme_get_default (void);
|
|||||||
|
|
||||||
MetaTheme* meta_theme_new (void);
|
MetaTheme* meta_theme_new (void);
|
||||||
void meta_theme_free (MetaTheme *theme);
|
void meta_theme_free (MetaTheme *theme);
|
||||||
gboolean meta_theme_validate (MetaTheme *theme,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
MetaTheme* meta_theme_load (const char *theme_name,
|
|
||||||
GError **err);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -42,31 +42,6 @@ typedef struct _MetaFrameStyle MetaFrameStyle;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef struct _MetaFrameStyleSet MetaFrameStyleSet;
|
typedef struct _MetaFrameStyleSet MetaFrameStyleSet;
|
||||||
/**
|
|
||||||
* MetaDrawOp: (skip)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _MetaDrawOp MetaDrawOp;
|
|
||||||
/**
|
|
||||||
* MetaDrawOpList: (skip)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _MetaDrawOpList MetaDrawOpList;
|
|
||||||
/**
|
|
||||||
* MetaGradientSpec: (skip)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _MetaGradientSpec MetaGradientSpec;
|
|
||||||
/**
|
|
||||||
* MetaAlphaGradientSpec: (skip)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _MetaAlphaGradientSpec MetaAlphaGradientSpec;
|
|
||||||
/**
|
|
||||||
* MetaColorSpec: (skip)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _MetaColorSpec MetaColorSpec;
|
|
||||||
/**
|
/**
|
||||||
* MetaFrameLayout: (skip)
|
* MetaFrameLayout: (skip)
|
||||||
*
|
*
|
||||||
@ -83,53 +58,10 @@ typedef struct _MetaButtonSpace MetaButtonSpace;
|
|||||||
*/
|
*/
|
||||||
typedef struct _MetaFrameGeometry MetaFrameGeometry;
|
typedef struct _MetaFrameGeometry MetaFrameGeometry;
|
||||||
|
|
||||||
/**
|
|
||||||
* MetaPositionExprEnv: (skip)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _MetaPositionExprEnv MetaPositionExprEnv;
|
|
||||||
/**
|
|
||||||
* MetaDrawInfo: (skip)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
typedef struct _MetaDrawInfo MetaDrawInfo;
|
|
||||||
|
|
||||||
#define META_THEME_ERROR (g_quark_from_static_string ("meta-theme-error"))
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_THEME_ERROR_FRAME_GEOMETRY,
|
|
||||||
META_THEME_ERROR_BAD_CHARACTER,
|
|
||||||
META_THEME_ERROR_BAD_PARENS,
|
|
||||||
META_THEME_ERROR_UNKNOWN_VARIABLE,
|
|
||||||
META_THEME_ERROR_DIVIDE_BY_ZERO,
|
|
||||||
META_THEME_ERROR_MOD_ON_FLOAT,
|
|
||||||
META_THEME_ERROR_FAILED
|
|
||||||
} MetaThemeError;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether a button's size is calculated from the area around it (aspect
|
|
||||||
* sizing) or is given as a fixed height and width in pixels (fixed sizing).
|
|
||||||
*
|
|
||||||
* \bug This could be done away with; see the comment at the top of
|
|
||||||
* MetaFrameLayout.
|
|
||||||
*/
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_BUTTON_SIZING_ASPECT,
|
|
||||||
META_BUTTON_SIZING_FIXED,
|
|
||||||
META_BUTTON_SIZING_LAST
|
|
||||||
} MetaButtonSizing;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Various parameters used to calculate the geometry of a frame.
|
* Various parameters used to calculate the geometry of a frame.
|
||||||
* They are used inside a MetaFrameStyle.
|
* They are used inside a MetaFrameStyle.
|
||||||
* This corresponds closely to the <frame_geometry> tag in a theme file.
|
* This corresponds closely to the <frame_geometry> tag in a theme file.
|
||||||
*
|
|
||||||
* \bug button_sizing isn't really necessary, because we could easily say
|
|
||||||
* that if button_aspect is zero, the height and width are fixed values.
|
|
||||||
* This would also mean that MetaButtonSizing didn't need to exist, and
|
|
||||||
* save code.
|
|
||||||
**/
|
**/
|
||||||
struct _MetaFrameLayout
|
struct _MetaFrameLayout
|
||||||
{
|
{
|
||||||
@ -156,22 +88,6 @@ struct _MetaFrameLayout
|
|||||||
/** Left indent of buttons from edges of frame */
|
/** Left indent of buttons from edges of frame */
|
||||||
int left_titlebar_edge;
|
int left_titlebar_edge;
|
||||||
|
|
||||||
/**
|
|
||||||
* Sizing rule of buttons, either META_BUTTON_SIZING_ASPECT
|
|
||||||
* (in which case button_aspect will be honoured, and
|
|
||||||
* button_width and button_height set from it), or
|
|
||||||
* META_BUTTON_SIZING_FIXED (in which case we read the width
|
|
||||||
* and height directly).
|
|
||||||
*/
|
|
||||||
MetaButtonSizing button_sizing;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ratio of height/width. Honoured only if
|
|
||||||
* button_sizing==META_BUTTON_SIZING_ASPECT.
|
|
||||||
* Otherwise we figure out the height from the button_border.
|
|
||||||
*/
|
|
||||||
double button_aspect;
|
|
||||||
|
|
||||||
/** Width of a button; set even when we are using aspect sizing */
|
/** Width of a button; set even when we are using aspect sizing */
|
||||||
int button_width;
|
int button_width;
|
||||||
|
|
||||||
@ -239,7 +155,7 @@ struct _MetaFrameGeometry
|
|||||||
|
|
||||||
/* used for a memset hack */
|
/* used for a memset hack */
|
||||||
#define ADDRESS_OF_BUTTON_RECTS(fgeom) (((char*)(fgeom)) + G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
|
#define ADDRESS_OF_BUTTON_RECTS(fgeom) (((char*)(fgeom)) + G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
|
||||||
#define LENGTH_OF_BUTTON_RECTS (G_STRUCT_OFFSET (MetaFrameGeometry, right_single_background) + sizeof (GdkRectangle) - G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
|
#define LENGTH_OF_BUTTON_RECTS (G_STRUCT_OFFSET (MetaFrameGeometry, unstick_rect) + sizeof (GdkRectangle) - G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
|
||||||
|
|
||||||
/* The button rects (if changed adjust memset hack) */
|
/* The button rects (if changed adjust memset hack) */
|
||||||
MetaButtonSpace close_rect;
|
MetaButtonSpace close_rect;
|
||||||
@ -253,16 +169,6 @@ struct _MetaFrameGeometry
|
|||||||
MetaButtonSpace unshade_rect;
|
MetaButtonSpace unshade_rect;
|
||||||
MetaButtonSpace unabove_rect;
|
MetaButtonSpace unabove_rect;
|
||||||
MetaButtonSpace unstick_rect;
|
MetaButtonSpace unstick_rect;
|
||||||
|
|
||||||
#define MAX_MIDDLE_BACKGROUNDS (MAX_BUTTONS_PER_CORNER - 2)
|
|
||||||
GdkRectangle left_left_background;
|
|
||||||
GdkRectangle left_middle_backgrounds[MAX_MIDDLE_BACKGROUNDS];
|
|
||||||
GdkRectangle left_right_background;
|
|
||||||
GdkRectangle left_single_background;
|
|
||||||
GdkRectangle right_left_background;
|
|
||||||
GdkRectangle right_middle_backgrounds[MAX_MIDDLE_BACKGROUNDS];
|
|
||||||
GdkRectangle right_right_background;
|
|
||||||
GdkRectangle right_single_background;
|
|
||||||
/* End of button rects (if changed adjust memset hack) */
|
/* End of button rects (if changed adjust memset hack) */
|
||||||
|
|
||||||
/* Saved button layout */
|
/* Saved button layout */
|
||||||
@ -277,380 +183,6 @@ struct _MetaFrameGeometry
|
|||||||
guint bottom_right_corner_rounded_radius;
|
guint bottom_right_corner_rounded_radius;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_IMAGE_FILL_SCALE, /* default, needs to be all-bits-zero for g_new0 */
|
|
||||||
META_IMAGE_FILL_TILE
|
|
||||||
} MetaImageFillType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_GRADIENT_VERTICAL,
|
|
||||||
META_GRADIENT_HORIZONTAL,
|
|
||||||
META_GRADIENT_DIAGONAL,
|
|
||||||
META_GRADIENT_LAST
|
|
||||||
} MetaGradientType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_COLOR_SPEC_BASIC,
|
|
||||||
META_COLOR_SPEC_GTK,
|
|
||||||
META_COLOR_SPEC_GTK_CUSTOM,
|
|
||||||
META_COLOR_SPEC_BLEND,
|
|
||||||
META_COLOR_SPEC_SHADE
|
|
||||||
} MetaColorSpecType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
META_GTK_COLOR_FG,
|
|
||||||
META_GTK_COLOR_BG,
|
|
||||||
META_GTK_COLOR_LIGHT,
|
|
||||||
META_GTK_COLOR_DARK,
|
|
||||||
META_GTK_COLOR_MID,
|
|
||||||
META_GTK_COLOR_TEXT,
|
|
||||||
META_GTK_COLOR_BASE,
|
|
||||||
META_GTK_COLOR_TEXT_AA,
|
|
||||||
META_GTK_COLOR_LAST
|
|
||||||
} MetaGtkColorComponent;
|
|
||||||
|
|
||||||
struct _MetaColorSpec
|
|
||||||
{
|
|
||||||
MetaColorSpecType type;
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct {
|
|
||||||
GdkRGBA color;
|
|
||||||
} basic;
|
|
||||||
struct {
|
|
||||||
MetaGtkColorComponent component;
|
|
||||||
GtkStateFlags state;
|
|
||||||
} gtk;
|
|
||||||
struct {
|
|
||||||
char *color_name;
|
|
||||||
MetaColorSpec *fallback;
|
|
||||||
} gtkcustom;
|
|
||||||
struct {
|
|
||||||
MetaColorSpec *foreground;
|
|
||||||
MetaColorSpec *background;
|
|
||||||
double alpha;
|
|
||||||
|
|
||||||
GdkRGBA color;
|
|
||||||
} blend;
|
|
||||||
struct {
|
|
||||||
MetaColorSpec *base;
|
|
||||||
double factor;
|
|
||||||
|
|
||||||
GdkRGBA color;
|
|
||||||
} shade;
|
|
||||||
} data;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaGradientSpec
|
|
||||||
{
|
|
||||||
MetaGradientType type;
|
|
||||||
GSList *color_specs;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaAlphaGradientSpec
|
|
||||||
{
|
|
||||||
MetaGradientType type;
|
|
||||||
unsigned char *alphas;
|
|
||||||
int n_alphas;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaDrawInfo
|
|
||||||
{
|
|
||||||
GdkPixbuf *mini_icon;
|
|
||||||
GdkPixbuf *icon;
|
|
||||||
PangoLayout *title_layout;
|
|
||||||
int title_layout_width;
|
|
||||||
int title_layout_height;
|
|
||||||
const MetaFrameGeometry *fgeom;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A drawing operation in our simple vector drawing language.
|
|
||||||
*/
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
/** Basic drawing-- line */
|
|
||||||
META_DRAW_LINE,
|
|
||||||
/** Basic drawing-- rectangle */
|
|
||||||
META_DRAW_RECTANGLE,
|
|
||||||
/** Basic drawing-- arc */
|
|
||||||
META_DRAW_ARC,
|
|
||||||
|
|
||||||
/** Clip to a rectangle */
|
|
||||||
META_DRAW_CLIP,
|
|
||||||
|
|
||||||
/* Texture thingies */
|
|
||||||
|
|
||||||
/** Just a filled rectangle with alpha */
|
|
||||||
META_DRAW_TINT,
|
|
||||||
META_DRAW_GRADIENT,
|
|
||||||
META_DRAW_IMAGE,
|
|
||||||
|
|
||||||
/** GTK theme engine stuff */
|
|
||||||
META_DRAW_GTK_ARROW,
|
|
||||||
META_DRAW_GTK_BOX,
|
|
||||||
META_DRAW_GTK_VLINE,
|
|
||||||
|
|
||||||
/** App's window icon */
|
|
||||||
META_DRAW_ICON,
|
|
||||||
/** App's window title */
|
|
||||||
META_DRAW_TITLE,
|
|
||||||
/** a draw op list */
|
|
||||||
META_DRAW_OP_LIST,
|
|
||||||
/** tiled draw op list */
|
|
||||||
META_DRAW_TILE
|
|
||||||
} MetaDrawType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
POS_TOKEN_INT,
|
|
||||||
POS_TOKEN_DOUBLE,
|
|
||||||
POS_TOKEN_OPERATOR,
|
|
||||||
POS_TOKEN_VARIABLE,
|
|
||||||
POS_TOKEN_OPEN_PAREN,
|
|
||||||
POS_TOKEN_CLOSE_PAREN
|
|
||||||
} PosTokenType;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
POS_OP_NONE,
|
|
||||||
POS_OP_ADD,
|
|
||||||
POS_OP_SUBTRACT,
|
|
||||||
POS_OP_MULTIPLY,
|
|
||||||
POS_OP_DIVIDE,
|
|
||||||
POS_OP_MOD,
|
|
||||||
POS_OP_MAX,
|
|
||||||
POS_OP_MIN
|
|
||||||
} PosOperatorType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A token, as output by the tokeniser.
|
|
||||||
*
|
|
||||||
* \ingroup tokenizer
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
PosTokenType type;
|
|
||||||
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct {
|
|
||||||
int val;
|
|
||||||
} i;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
double val;
|
|
||||||
} d;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
PosOperatorType op;
|
|
||||||
} o;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
char *name;
|
|
||||||
GQuark name_quark;
|
|
||||||
} v;
|
|
||||||
|
|
||||||
} d;
|
|
||||||
} PosToken;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MetaDrawSpec: (skip)
|
|
||||||
*
|
|
||||||
* A computed expression in our simple vector drawing language.
|
|
||||||
* While it appears to take the form of a tree, this is actually
|
|
||||||
* merely a list; concerns such as precedence of operators are
|
|
||||||
* currently recomputed on every recalculation.
|
|
||||||
*
|
|
||||||
* Created by meta_draw_spec_new(), destroyed by meta_draw_spec_free().
|
|
||||||
* pos_eval() fills this with ...FIXME. Are tokens a tree or a list?
|
|
||||||
* \ingroup parser
|
|
||||||
*/
|
|
||||||
typedef struct _MetaDrawSpec MetaDrawSpec;
|
|
||||||
struct _MetaDrawSpec
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* If this spec is constant, this is the value of the constant;
|
|
||||||
* otherwise it is zero.
|
|
||||||
*/
|
|
||||||
int value;
|
|
||||||
|
|
||||||
/** A list of tokens in the expression. */
|
|
||||||
PosToken *tokens;
|
|
||||||
|
|
||||||
/** How many tokens are in the tokens list. */
|
|
||||||
int n_tokens;
|
|
||||||
|
|
||||||
/** Does the expression contain any variables? */
|
|
||||||
gboolean constant : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A single drawing operation in our simple vector drawing language.
|
|
||||||
*/
|
|
||||||
struct _MetaDrawOp
|
|
||||||
{
|
|
||||||
MetaDrawType type;
|
|
||||||
|
|
||||||
/* Positions are strings because they can be expressions */
|
|
||||||
union
|
|
||||||
{
|
|
||||||
struct {
|
|
||||||
MetaColorSpec *color_spec;
|
|
||||||
int dash_on_length;
|
|
||||||
int dash_off_length;
|
|
||||||
int width;
|
|
||||||
MetaDrawSpec *x1;
|
|
||||||
MetaDrawSpec *y1;
|
|
||||||
MetaDrawSpec *x2;
|
|
||||||
MetaDrawSpec *y2;
|
|
||||||
} line;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaColorSpec *color_spec;
|
|
||||||
gboolean filled;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
} rectangle;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaColorSpec *color_spec;
|
|
||||||
gboolean filled;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
double start_angle;
|
|
||||||
double extent_angle;
|
|
||||||
} arc;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
} clip;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaColorSpec *color_spec;
|
|
||||||
MetaAlphaGradientSpec *alpha_spec;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
} tint;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaGradientSpec *gradient_spec;
|
|
||||||
MetaAlphaGradientSpec *alpha_spec;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
} gradient;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaAlphaGradientSpec *alpha_spec;
|
|
||||||
GdkPixbuf *pixbuf;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
|
|
||||||
MetaImageFillType fill_type;
|
|
||||||
unsigned int vertical_stripes : 1;
|
|
||||||
unsigned int horizontal_stripes : 1;
|
|
||||||
} image;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
GtkStateFlags state;
|
|
||||||
GtkShadowType shadow;
|
|
||||||
GtkArrowType arrow;
|
|
||||||
gboolean filled;
|
|
||||||
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
} gtk_arrow;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
GtkStateFlags state;
|
|
||||||
GtkShadowType shadow;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
} gtk_box;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
GtkStateFlags state;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y1;
|
|
||||||
MetaDrawSpec *y2;
|
|
||||||
} gtk_vline;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaAlphaGradientSpec *alpha_spec;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
MetaImageFillType fill_type;
|
|
||||||
} icon;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaColorSpec *color_spec;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *ellipsize_width;
|
|
||||||
} title;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaDrawOpList *op_list;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
} op_list;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
MetaDrawOpList *op_list;
|
|
||||||
MetaDrawSpec *x;
|
|
||||||
MetaDrawSpec *y;
|
|
||||||
MetaDrawSpec *width;
|
|
||||||
MetaDrawSpec *height;
|
|
||||||
MetaDrawSpec *tile_xoffset;
|
|
||||||
MetaDrawSpec *tile_yoffset;
|
|
||||||
MetaDrawSpec *tile_width;
|
|
||||||
MetaDrawSpec *tile_height;
|
|
||||||
} tile;
|
|
||||||
|
|
||||||
} data;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A list of MetaDrawOp objects. Maintains a reference count.
|
|
||||||
* Grows as necessary and allows the allocation of unused spaces
|
|
||||||
* to keep reallocations to a minimum.
|
|
||||||
*
|
|
||||||
* \bug Do we really win anything from not using the equivalent
|
|
||||||
* GLib structures?
|
|
||||||
*/
|
|
||||||
struct _MetaDrawOpList
|
|
||||||
{
|
|
||||||
int refcount;
|
|
||||||
MetaDrawOp **ops;
|
|
||||||
int n_ops;
|
|
||||||
int n_allocated;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
META_BUTTON_STATE_NORMAL,
|
META_BUTTON_STATE_NORMAL,
|
||||||
@ -661,15 +193,6 @@ typedef enum
|
|||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
/* Ordered so that background is drawn first */
|
|
||||||
META_BUTTON_TYPE_LEFT_LEFT_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_LEFT_MIDDLE_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_LEFT_RIGHT_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_LEFT_SINGLE_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_RIGHT_LEFT_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_RIGHT_MIDDLE_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_RIGHT_RIGHT_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_RIGHT_SINGLE_BACKGROUND,
|
|
||||||
META_BUTTON_TYPE_CLOSE,
|
META_BUTTON_TYPE_CLOSE,
|
||||||
META_BUTTON_TYPE_MAXIMIZE,
|
META_BUTTON_TYPE_MAXIMIZE,
|
||||||
META_BUTTON_TYPE_MINIMIZE,
|
META_BUTTON_TYPE_MINIMIZE,
|
||||||
@ -701,51 +224,6 @@ struct _MetaStyleInfo
|
|||||||
GtkStyleContext *styles[META_STYLE_ELEMENT_LAST];
|
GtkStyleContext *styles[META_STYLE_ELEMENT_LAST];
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
/* Listed in the order in which the textures are drawn.
|
|
||||||
* (though this only matters for overlaps of course.)
|
|
||||||
* Buttons are drawn after the frame textures.
|
|
||||||
*
|
|
||||||
* On the corners, horizontal pieces are arbitrarily given the
|
|
||||||
* corner area:
|
|
||||||
*
|
|
||||||
* ===== |====
|
|
||||||
* | |
|
|
||||||
* | rather than |
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* entire frame */
|
|
||||||
META_FRAME_PIECE_ENTIRE_BACKGROUND,
|
|
||||||
/* entire titlebar background */
|
|
||||||
META_FRAME_PIECE_TITLEBAR,
|
|
||||||
/* portion of the titlebar background inside the titlebar
|
|
||||||
* background edges
|
|
||||||
*/
|
|
||||||
META_FRAME_PIECE_TITLEBAR_MIDDLE,
|
|
||||||
/* left end of titlebar */
|
|
||||||
META_FRAME_PIECE_LEFT_TITLEBAR_EDGE,
|
|
||||||
/* right end of titlebar */
|
|
||||||
META_FRAME_PIECE_RIGHT_TITLEBAR_EDGE,
|
|
||||||
/* top edge of titlebar */
|
|
||||||
META_FRAME_PIECE_TOP_TITLEBAR_EDGE,
|
|
||||||
/* bottom edge of titlebar */
|
|
||||||
META_FRAME_PIECE_BOTTOM_TITLEBAR_EDGE,
|
|
||||||
/* render over title background (text area) */
|
|
||||||
META_FRAME_PIECE_TITLE,
|
|
||||||
/* left edge of the frame */
|
|
||||||
META_FRAME_PIECE_LEFT_EDGE,
|
|
||||||
/* right edge of the frame */
|
|
||||||
META_FRAME_PIECE_RIGHT_EDGE,
|
|
||||||
/* bottom edge of the frame */
|
|
||||||
META_FRAME_PIECE_BOTTOM_EDGE,
|
|
||||||
/* place over entire frame, after drawing everything else */
|
|
||||||
META_FRAME_PIECE_OVERLAY,
|
|
||||||
/* Used to get size of the enum */
|
|
||||||
META_FRAME_PIECE_LAST
|
|
||||||
} MetaFramePiece;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How to draw a frame in a particular state (say, a focussed, non-maximised,
|
* How to draw a frame in a particular state (say, a focussed, non-maximised,
|
||||||
* resizable frame). This corresponds closely to the <frame_style> tag
|
* resizable frame). This corresponds closely to the <frame_style> tag
|
||||||
@ -760,24 +238,11 @@ struct _MetaFrameStyle
|
|||||||
* Settings which are unspecified here will be taken from there.
|
* Settings which are unspecified here will be taken from there.
|
||||||
*/
|
*/
|
||||||
MetaFrameStyle *parent;
|
MetaFrameStyle *parent;
|
||||||
/** Operations for drawing each kind of button in each state. */
|
|
||||||
MetaDrawOpList *buttons[META_BUTTON_TYPE_LAST][META_BUTTON_STATE_LAST];
|
|
||||||
/** Operations for drawing each piece of the frame. */
|
|
||||||
MetaDrawOpList *pieces[META_FRAME_PIECE_LAST];
|
|
||||||
/**
|
/**
|
||||||
* Details such as the height and width of each edge, the corner rounding,
|
* Details such as the height and width of each edge, the corner rounding,
|
||||||
* and the aspect ratio of the buttons.
|
* and the aspect ratio of the buttons.
|
||||||
*/
|
*/
|
||||||
MetaFrameLayout *layout;
|
MetaFrameLayout *layout;
|
||||||
/**
|
|
||||||
* Background colour of the window. Only present in theme formats
|
|
||||||
* 2 and above. Can be NULL to use the standard GTK theme engine.
|
|
||||||
*/
|
|
||||||
MetaColorSpec *window_background_color;
|
|
||||||
/**
|
|
||||||
* Transparency of the window background. 0=transparent; 255=opaque.
|
|
||||||
*/
|
|
||||||
guint8 window_background_alpha;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Kinds of frame...
|
/* Kinds of frame...
|
||||||
@ -851,92 +316,11 @@ struct _MetaFrameStyleSet
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* A theme. This is a singleton class which groups all settings from a theme
|
* A theme. This is a singleton class which groups all settings from a theme
|
||||||
* on disk together.
|
* together.
|
||||||
*
|
|
||||||
* \bug It is rather useless to keep the metadata fields in core, I think.
|
|
||||||
*/
|
*/
|
||||||
struct _MetaTheme
|
struct _MetaTheme
|
||||||
{
|
{
|
||||||
/** Name of the theme (on disk), e.g. "Crux" */
|
|
||||||
char *name;
|
|
||||||
/** Path to the files associated with the theme */
|
|
||||||
char *dirname;
|
|
||||||
/**
|
|
||||||
* Filename of the XML theme file.
|
|
||||||
* \bug Kept lying around for no discernable reason.
|
|
||||||
*/
|
|
||||||
char *filename;
|
|
||||||
/** Metadata: Human-readable name of the theme. */
|
|
||||||
char *readable_name;
|
|
||||||
/** Metadata: Author of the theme. */
|
|
||||||
char *author;
|
|
||||||
/** Metadata: Copyright holder. */
|
|
||||||
char *copyright;
|
|
||||||
/** Metadata: Date of the theme. */
|
|
||||||
char *date;
|
|
||||||
/** Metadata: Description of the theme. */
|
|
||||||
char *description;
|
|
||||||
/** Version of the theme format. Older versions cannot use the features
|
|
||||||
* of newer versions even if they think they can (this is to allow forward
|
|
||||||
* and backward compatibility.
|
|
||||||
*/
|
|
||||||
guint format_version;
|
|
||||||
|
|
||||||
/** Symbol table of integer constants. */
|
|
||||||
GHashTable *integer_constants;
|
|
||||||
/** Symbol table of float constants. */
|
|
||||||
GHashTable *float_constants;
|
|
||||||
/**
|
|
||||||
* Symbol table of colour constants (hex triples, and triples
|
|
||||||
* plus alpha).
|
|
||||||
* */
|
|
||||||
GHashTable *color_constants;
|
|
||||||
GHashTable *images_by_filename;
|
|
||||||
GHashTable *layouts_by_name;
|
|
||||||
GHashTable *draw_op_lists_by_name;
|
|
||||||
GHashTable *styles_by_name;
|
|
||||||
GHashTable *style_sets_by_name;
|
|
||||||
MetaFrameStyleSet *style_sets_by_type[META_FRAME_TYPE_LAST];
|
MetaFrameStyleSet *style_sets_by_type[META_FRAME_TYPE_LAST];
|
||||||
|
|
||||||
GQuark quark_width;
|
|
||||||
GQuark quark_height;
|
|
||||||
GQuark quark_object_width;
|
|
||||||
GQuark quark_object_height;
|
|
||||||
GQuark quark_left_width;
|
|
||||||
GQuark quark_right_width;
|
|
||||||
GQuark quark_top_height;
|
|
||||||
GQuark quark_bottom_height;
|
|
||||||
GQuark quark_mini_icon_width;
|
|
||||||
GQuark quark_mini_icon_height;
|
|
||||||
GQuark quark_icon_width;
|
|
||||||
GQuark quark_icon_height;
|
|
||||||
GQuark quark_title_width;
|
|
||||||
GQuark quark_title_height;
|
|
||||||
GQuark quark_frame_x_center;
|
|
||||||
GQuark quark_frame_y_center;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _MetaPositionExprEnv
|
|
||||||
{
|
|
||||||
MetaRectangle rect;
|
|
||||||
/* size of an object being drawn, if it has a natural size */
|
|
||||||
int object_width;
|
|
||||||
int object_height;
|
|
||||||
/* global object sizes, always available */
|
|
||||||
int left_width;
|
|
||||||
int right_width;
|
|
||||||
int top_height;
|
|
||||||
int bottom_height;
|
|
||||||
int title_width;
|
|
||||||
int title_height;
|
|
||||||
int frame_x_center;
|
|
||||||
int frame_y_center;
|
|
||||||
int mini_icon_width;
|
|
||||||
int mini_icon_height;
|
|
||||||
int icon_width;
|
|
||||||
int icon_height;
|
|
||||||
/* Theme so we can look up constants */
|
|
||||||
MetaTheme *theme;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
MetaFrameLayout* meta_frame_layout_new (void);
|
MetaFrameLayout* meta_frame_layout_new (void);
|
||||||
@ -948,77 +332,6 @@ void meta_frame_layout_get_borders (const MetaFrameLayout *layout,
|
|||||||
MetaFrameFlags flags,
|
MetaFrameFlags flags,
|
||||||
MetaFrameType type,
|
MetaFrameType type,
|
||||||
MetaFrameBorders *borders);
|
MetaFrameBorders *borders);
|
||||||
gboolean meta_frame_layout_validate (const MetaFrameLayout *layout,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
gboolean meta_parse_position_expression (MetaDrawSpec *spec,
|
|
||||||
const MetaPositionExprEnv *env,
|
|
||||||
int *x_return,
|
|
||||||
int *y_return,
|
|
||||||
GError **err);
|
|
||||||
gboolean meta_parse_size_expression (MetaDrawSpec *spec,
|
|
||||||
const MetaPositionExprEnv *env,
|
|
||||||
int *val_return,
|
|
||||||
GError **err);
|
|
||||||
|
|
||||||
MetaDrawSpec* meta_draw_spec_new (MetaTheme *theme,
|
|
||||||
const char *expr,
|
|
||||||
GError **error);
|
|
||||||
void meta_draw_spec_free (MetaDrawSpec *spec);
|
|
||||||
|
|
||||||
MetaColorSpec* meta_color_spec_new (MetaColorSpecType type);
|
|
||||||
MetaColorSpec* meta_color_spec_new_from_string (const char *str,
|
|
||||||
GError **err);
|
|
||||||
MetaColorSpec* meta_color_spec_new_gtk (MetaGtkColorComponent component,
|
|
||||||
GtkStateFlags state);
|
|
||||||
void meta_color_spec_free (MetaColorSpec *spec);
|
|
||||||
void meta_color_spec_render (MetaColorSpec *spec,
|
|
||||||
GtkStyleContext *style_gtk,
|
|
||||||
GdkRGBA *color);
|
|
||||||
|
|
||||||
|
|
||||||
MetaDrawOp* meta_draw_op_new (MetaDrawType type);
|
|
||||||
void meta_draw_op_free (MetaDrawOp *op);
|
|
||||||
|
|
||||||
void meta_draw_op_draw_with_style (const MetaDrawOp *op,
|
|
||||||
GtkStyleContext *style_gtk,
|
|
||||||
cairo_t *cr,
|
|
||||||
const MetaDrawInfo *info,
|
|
||||||
/* logical region being drawn */
|
|
||||||
MetaRectangle logical_region);
|
|
||||||
|
|
||||||
MetaDrawOpList* meta_draw_op_list_new (int n_preallocs);
|
|
||||||
void meta_draw_op_list_ref (MetaDrawOpList *op_list);
|
|
||||||
void meta_draw_op_list_unref (MetaDrawOpList *op_list);
|
|
||||||
void meta_draw_op_list_draw_with_style (const MetaDrawOpList *op_list,
|
|
||||||
GtkStyleContext *style_gtk,
|
|
||||||
cairo_t *cr,
|
|
||||||
const MetaDrawInfo *info,
|
|
||||||
MetaRectangle rect);
|
|
||||||
void meta_draw_op_list_append (MetaDrawOpList *op_list,
|
|
||||||
MetaDrawOp *op);
|
|
||||||
gboolean meta_draw_op_list_validate (MetaDrawOpList *op_list,
|
|
||||||
GError **error);
|
|
||||||
gboolean meta_draw_op_list_contains (MetaDrawOpList *op_list,
|
|
||||||
MetaDrawOpList *child);
|
|
||||||
|
|
||||||
MetaGradientSpec* meta_gradient_spec_new (MetaGradientType type);
|
|
||||||
void meta_gradient_spec_free (MetaGradientSpec *desc);
|
|
||||||
void meta_gradient_spec_render (const MetaGradientSpec *spec,
|
|
||||||
const MetaAlphaGradientSpec *alpha_spec,
|
|
||||||
cairo_t *cr,
|
|
||||||
GtkStyleContext *style,
|
|
||||||
int x,
|
|
||||||
int y,
|
|
||||||
int width,
|
|
||||||
int height);
|
|
||||||
gboolean meta_gradient_spec_validate (MetaGradientSpec *spec,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
MetaAlphaGradientSpec* meta_alpha_gradient_spec_new (MetaGradientType type,
|
|
||||||
int n_alphas);
|
|
||||||
void meta_alpha_gradient_spec_free (MetaAlphaGradientSpec *spec);
|
|
||||||
|
|
||||||
|
|
||||||
MetaFrameStyle* meta_frame_style_new (MetaFrameStyle *parent);
|
MetaFrameStyle* meta_frame_style_new (MetaFrameStyle *parent);
|
||||||
void meta_frame_style_ref (MetaFrameStyle *style);
|
void meta_frame_style_ref (MetaFrameStyle *style);
|
||||||
@ -1027,22 +340,10 @@ void meta_frame_style_unref (MetaFrameStyle *style);
|
|||||||
void meta_frame_style_apply_scale (const MetaFrameStyle *style,
|
void meta_frame_style_apply_scale (const MetaFrameStyle *style,
|
||||||
PangoFontDescription *font_desc);
|
PangoFontDescription *font_desc);
|
||||||
|
|
||||||
gboolean meta_frame_style_validate (MetaFrameStyle *style,
|
|
||||||
guint current_theme_version,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
MetaFrameStyleSet* meta_frame_style_set_new (MetaFrameStyleSet *parent);
|
MetaFrameStyleSet* meta_frame_style_set_new (MetaFrameStyleSet *parent);
|
||||||
void meta_frame_style_set_ref (MetaFrameStyleSet *style_set);
|
void meta_frame_style_set_ref (MetaFrameStyleSet *style_set);
|
||||||
void meta_frame_style_set_unref (MetaFrameStyleSet *style_set);
|
void meta_frame_style_set_unref (MetaFrameStyleSet *style_set);
|
||||||
|
|
||||||
gboolean meta_frame_style_set_validate (MetaFrameStyleSet *style_set,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
GdkPixbuf* meta_theme_load_image (MetaTheme *theme,
|
|
||||||
const char *filename,
|
|
||||||
guint size_of_theme_icons,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
MetaFrameStyle* meta_theme_get_frame_style (MetaTheme *theme,
|
MetaFrameStyle* meta_theme_get_frame_style (MetaTheme *theme,
|
||||||
MetaFrameType type,
|
MetaFrameType type,
|
||||||
MetaFrameFlags flags);
|
MetaFrameFlags flags);
|
||||||
@ -1087,91 +388,11 @@ void meta_theme_calc_geometry (MetaTheme *theme,
|
|||||||
const MetaButtonLayout *button_layout,
|
const MetaButtonLayout *button_layout,
|
||||||
MetaFrameGeometry *fgeom);
|
MetaFrameGeometry *fgeom);
|
||||||
|
|
||||||
MetaFrameLayout* meta_theme_lookup_layout (MetaTheme *theme,
|
|
||||||
const char *name);
|
|
||||||
void meta_theme_insert_layout (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
MetaFrameLayout *layout);
|
|
||||||
MetaDrawOpList* meta_theme_lookup_draw_op_list (MetaTheme *theme,
|
|
||||||
const char *name);
|
|
||||||
void meta_theme_insert_draw_op_list (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
MetaDrawOpList *op_list);
|
|
||||||
MetaFrameStyle* meta_theme_lookup_style (MetaTheme *theme,
|
|
||||||
const char *name);
|
|
||||||
void meta_theme_insert_style (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
MetaFrameStyle *style);
|
|
||||||
MetaFrameStyleSet* meta_theme_lookup_style_set (MetaTheme *theme,
|
|
||||||
const char *name);
|
|
||||||
void meta_theme_insert_style_set (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
MetaFrameStyleSet *style_set);
|
|
||||||
gboolean meta_theme_define_int_constant (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
int value,
|
|
||||||
GError **error);
|
|
||||||
gboolean meta_theme_lookup_int_constant (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
int *value);
|
|
||||||
gboolean meta_theme_define_float_constant (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
double value,
|
|
||||||
GError **error);
|
|
||||||
gboolean meta_theme_lookup_float_constant (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
double *value);
|
|
||||||
|
|
||||||
gboolean meta_theme_define_color_constant (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
const char *value,
|
|
||||||
GError **error);
|
|
||||||
gboolean meta_theme_lookup_color_constant (MetaTheme *theme,
|
|
||||||
const char *name,
|
|
||||||
char **value);
|
|
||||||
|
|
||||||
gboolean meta_theme_replace_constants (MetaTheme *theme,
|
|
||||||
PosToken *tokens,
|
|
||||||
int n_tokens,
|
|
||||||
GError **err);
|
|
||||||
|
|
||||||
/* random stuff */
|
/* random stuff */
|
||||||
|
|
||||||
int meta_pango_font_desc_get_text_height (const PangoFontDescription *font_desc,
|
int meta_pango_font_desc_get_text_height (const PangoFontDescription *font_desc,
|
||||||
PangoContext *context);
|
PangoContext *context);
|
||||||
|
|
||||||
|
|
||||||
/* Enum converters */
|
|
||||||
MetaGtkColorComponent meta_color_component_from_string (const char *str);
|
|
||||||
MetaButtonState meta_button_state_from_string (const char *str);
|
|
||||||
const char* meta_button_state_to_string (MetaButtonState state);
|
|
||||||
MetaButtonType meta_button_type_from_string (const char *str,
|
|
||||||
MetaTheme *theme);
|
|
||||||
const char* meta_button_type_to_string (MetaButtonType type);
|
|
||||||
MetaFramePiece meta_frame_piece_from_string (const char *str);
|
|
||||||
MetaFrameState meta_frame_state_from_string (const char *str);
|
|
||||||
const char* meta_frame_state_to_string (MetaFrameState state);
|
|
||||||
MetaFrameResize meta_frame_resize_from_string (const char *str);
|
|
||||||
const char* meta_frame_resize_to_string (MetaFrameResize resize);
|
|
||||||
MetaFrameFocus meta_frame_focus_from_string (const char *str);
|
|
||||||
const char* meta_frame_focus_to_string (MetaFrameFocus focus);
|
|
||||||
MetaFrameType meta_frame_type_from_string (const char *str);
|
|
||||||
MetaGradientType meta_gradient_type_from_string (const char *str);
|
|
||||||
GtkStateFlags meta_gtk_state_from_string (const char *str);
|
|
||||||
GtkShadowType meta_gtk_shadow_from_string (const char *str);
|
|
||||||
GtkArrowType meta_gtk_arrow_from_string (const char *str);
|
|
||||||
MetaImageFillType meta_image_fill_type_from_string (const char *str);
|
|
||||||
|
|
||||||
void meta_gtk_style_get_light_color (GtkStyleContext *style,
|
|
||||||
GtkStateFlags state,
|
|
||||||
GdkRGBA *color);
|
|
||||||
void meta_gtk_style_get_dark_color (GtkStyleContext *style,
|
|
||||||
GtkStateFlags state,
|
|
||||||
GdkRGBA *color);
|
|
||||||
|
|
||||||
guint meta_theme_earliest_version_with_button (MetaButtonType type);
|
|
||||||
|
|
||||||
|
|
||||||
#define META_THEME_ALLOWS(theme, feature) (theme->format_version >= feature)
|
#define META_THEME_ALLOWS(theme, feature) (theme->format_version >= feature)
|
||||||
|
|
||||||
/* What version of the theme file format were various features introduced in? */
|
/* What version of the theme file format were various features introduced in? */
|
||||||
|
4652
src/ui/theme.c
4652
src/ui/theme.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user