summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHavoc Pennington <hp@pobox.com>2002-07-25 02:45:38 +0000
committerHavoc Pennington <hp@src.gnome.org>2002-07-25 02:45:38 +0000
commit9abae5b0a22cdd7d0b95bfeb3be526f483110983 (patch)
tree7352d35d317d15def3183b05b9555fb5ace9484b
parent98c3b06ffd010be6cc5dc099436b503818609d9b (diff)
downloadmetacity-9abae5b0a22cdd7d0b95bfeb3be526f483110983.tar.gz
add Metabox theme from Garrett
2002-07-24 Havoc Pennington <hp@pobox.com> * src/themes/Makefile.am (THEMES): add Metabox theme from Garrett * README: updates 2002-07-21 Havoc Pennington <hp@pobox.com> * src/window.c (meta_window_new): don't automaximize fullscreen windows. 2002-07-14 Havoc Pennington <hp@pobox.com> * src/window.c (recalc_window_features): don't allow shading of border-only windows.
-rw-r--r--ChangeLog16
-rw-r--r--README57
-rw-r--r--src/themes/Makefile.am3
-rw-r--r--src/themes/Metabox/metacity-theme-1.xml470
-rw-r--r--src/window.c5
5 files changed, 497 insertions, 54 deletions
diff --git a/ChangeLog b/ChangeLog
index 5ff84d2e..d952607f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2002-07-24 Havoc Pennington <hp@pobox.com>
+
+ * src/themes/Makefile.am (THEMES): add Metabox theme from Garrett
+
+ * README: updates
+
+2002-07-21 Havoc Pennington <hp@pobox.com>
+
+ * src/window.c (meta_window_new): don't automaximize fullscreen
+ windows.
+
+2002-07-14 Havoc Pennington <hp@pobox.com>
+
+ * src/window.c (recalc_window_features): don't allow shading of
+ border-only windows.
+
2002-07-24 Havoc Pennington <hp@redhat.com>
* src/theme-parser.c (meta_theme_load): look for themes in
diff --git a/README b/README
index 25a96978..1ef8d223 100644
--- a/README
+++ b/README
@@ -16,9 +16,9 @@ REPORTING BUGS AND SUBMITTING PATCHES
Report new bugs on http://bugzilla.gnome.org.
-Feel free to send patches too; Metacity is really small and simple, so
-if you find a bug or want to add a feature it should be pretty easy.
-Send me mail, or put the patch in bugzilla.
+Feel free to send patches too; Metacity is relatively small and
+simple, so if you find a bug or want to add a feature it should be
+pretty easy. Send me mail, or put the patch in bugzilla.
See the HACKING file for some notes on hacking Metacity.
@@ -57,7 +57,7 @@ METACITY FEATURES
Alt-Shift-Tab backward cycle focus
Alt-Ctrl-Tab forward cycle focus among panels
Alt-Ctrl-Shift-Tab backward cycle focus among panels
- Alt-Escape focus previous window
+ Alt-Escape cycle window focus without a popup thingy
Ctrl-Alt-Left Arrow previous workspace
Ctrl-Alt-Right Arrow next workspace
Ctrl-Alt-D minimize/unminimize all, to show desktop
@@ -156,56 +156,13 @@ METACITY BUGS, NON-FEATURES, AND CAVEATS
- There are probably other ICCCM-compliance issues.
- - Window placement is always cascade for now; I want to implement
- "first fit, falling back to cascade if no fit."
- (Configurable placement algorithms are stupid though, don't
- send me patches for any bogus ones. Let's just pick a good one.)
+ - The first-fit algorithm for placement isn't very clever.
- Should Metacity support flipping in right-to-left locales?
I don't know what window managers look like in a right-to-left
locale. I assume the window titles should be right-justified;
should the window controls also be flipped?
- - Resize menu item doesn't do anything. It's intended to enter
- resize-with-the-keyboard mode, similar to Move menu item.
-
- - In GNOME 1.x, if you switch from sawfish to metacity without
- restarting X, the panel often ends up buried behind the Nautilus
- desktop window.
-
- What happens is that the panel detects Sawfish has gone away, and
- turns on override redirect mode because no GNOME-aware WM is
- running (i.e. it goes into "ignore the window manager" mode). But
- the panel doesn't notice that Metacity has appeared and is
- (partially) GNOME-compliant. So Metacity doesn't see the override
- redirect panel, and leaves it behind the Nautilus desktop. I'm not
- sure whether Metacity or the panel is to blame for this.
-
- (To debug - use "xwininfo" on the panel, if override redirect is
- "Yes" then Metacity won't have any awareness of a window and can't
- properly stack it above the desktop. If override redirect is "No"
- then Metacity can see the panel and handle it properly. Look at
- xstuff.c:xstuff_is_compliant_wm() in the panel to get started on
- how the panel deals with this.)
-
- - In GNOME 1.x, If you have "put panel below other windows" turned on
- in panel Global Preferences, Miscellaneous tab, you need to change
- this to "Put panel on top of other windows." That's because
- Metacity uses semantic categories, not the legacy layer system in
- the GNOME spec. It treats things in the legacy "dock" layer as
- semantic type dock, but if you have the panel set to be in another
- layer, Metacity will think it's a normal window.
-
- You can diagnose this problem because Metacity will put panels in
- the wrong place, and Alt+rightclick will let you perform operations
- like minimize/maximize, and Alt+leftclick will let you move the panel.
- If Metacity has detected that the panel is a panel, then none of
- this will be enabled.
-
- I put a patch in the CVS version of the panel to fix this by
- setting the new non-legacy type hint, but a panel with that
- patch hasn't been released yet.
-
FAQ
===
@@ -229,8 +186,7 @@ A: If it makes sense to turn on unconditionally,
so on. But I am too used to them to turn them off.
Or alternatively iconification/tasklist is crack, and workspaces/pager
are good. But having both is certainly a bit wrong.
- Sloppy focus is probably crackrock too. Oh, and my Alt-1 thru Alt-6
- keybindings are definitely on crack.
+ Sloppy focus is probably crackrock too.
But don't think unlimited crack is OK just because I slipped up a
little. No slippery slope here.
@@ -317,7 +273,6 @@ A: I could conceivably be convinced to use viewports _instead_ of
Q: Did you spend a lot of time on this?
A: Originally the answer was no. Sadly the answer is now yes.
- Still, it's only 12,000 lines of code.
Q: How can you claim that you are anti-crack, while still
writing a window manager?
diff --git a/src/themes/Makefile.am b/src/themes/Makefile.am
index 2dcf3449..f9349323 100644
--- a/src/themes/Makefile.am
+++ b/src/themes/Makefile.am
@@ -3,7 +3,8 @@ THEMES= \
Bright \
Crux \
Esco \
- Gorilla
+ Gorilla \
+ Metabox
THEME_DIR=$(datadir)/themes
THEME_SUBDIR=metacity-1
diff --git a/src/themes/Metabox/metacity-theme-1.xml b/src/themes/Metabox/metacity-theme-1.xml
new file mode 100644
index 00000000..9c473047
--- /dev/null
+++ b/src/themes/Metabox/metacity-theme-1.xml
@@ -0,0 +1,470 @@
+<?xml version="1.0"?>
+<metacity_theme>
+ <info>
+ <name>Metabox</name>
+ <author>Garrett LeSage &lt;garrett@redhat.com&lt; based on Havoc Pennington &lt;hp@redhat.com&gt;'s Atlanta theme</author>
+ <copyright>&#194; Garrett LeSage, Havoc Pennington, 2002</copyright>
+ <date>Jun 12, 2002</date>
+ <description>Looks a little like BlackBox.</description>
+ </info>
+
+ <frame_geometry name="normal">
+ <distance name="left_width" value="1"/>
+ <distance name="right_width" value="1"/>
+ <distance name="bottom_height" value="6"/>
+ <distance name="left_titlebar_edge" value="1"/>
+ <distance name="right_titlebar_edge" value="1"/>
+ <distance name="title_vertical_pad" value="3"/>
+ <border name="title_border" left="0" right="0" top="1" bottom="1"/>
+ <border name="button_border" left="0" right="0" top="1" bottom="1"/>
+ <aspect_ratio name="button" value="1.0"/>
+ </frame_geometry>
+
+ <!-- strip borders off the normal geometry -->
+ <frame_geometry name="normal_small_borders" 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>
+
+ <frame_geometry name="utility" title_scale="small">
+ <distance name="left_width" value="1"/>
+ <distance name="right_width" value="1"/>
+ <distance name="bottom_height" value="4"/>
+ <distance name="left_titlebar_edge" value="1"/>
+ <distance name="right_titlebar_edge" value="1"/>
+ <distance name="title_vertical_pad" value="1"/>
+ <border name="title_border" left="0" right="0" top="1" bottom="1"/>
+ <border name="button_border" left="0" right="0" top="1" bottom="1"/>
+ <aspect_ratio name="button" value="1.0"/>
+ </frame_geometry>
+
+ <frame_geometry name="border" has_title="false">
+ <distance name="left_width" value="4"/>
+ <distance name="right_width" value="4"/>
+ <distance name="bottom_height" value="4"/>
+ <distance name="left_titlebar_edge" value="0"/>
+ <distance name="right_titlebar_edge" value="0"/>
+ <distance name="button_width" value="0"/>
+ <distance name="button_height" value="0"/>
+ <distance name="title_vertical_pad" value="4"/>
+ <border name="title_border" left="0" right="0" top="0" bottom="0"/>
+ <border name="button_border" left="0" right="0" top="0" bottom="0"/>
+ </frame_geometry>
+
+ <!-- define constants -->
+ <constant name="ArrowWidth" value="7"/>
+ <constant name="ArrowHeight" value="5"/>
+ <constant name="ButtonIPad" value="4"/>
+ <constant name="ThickLineWidth" value="3"/>
+ <constant name="IconTitleSpacing" value="2"/>
+ <constant name="SpacerWidth" value="8"/>
+ <constant name="SpacerHeight" value="11"/>
+
+ <!-- Backgrounds -->
+
+ <draw_ops name="bg_active">
+ <gradient type="vertical" x="0" y="0" width="width" height="height">
+ <color value="shade/gtk:bg[SELECTED]/1.25"/>
+ <color value="shade/gtk:bg[SELECTED]/0.85"/>
+ </gradient>
+ </draw_ops>
+
+ <draw_ops name="bg_inactive">
+ <gradient type="vertical" x="0" y="0" width="width" height="height">
+ <color value="shade/gtk:bg[INSENSITIVE]/1.1"/>
+ <color value="shade/gtk:bg[INSENSITIVE]/0.9"/>
+ </gradient>
+ </draw_ops>
+
+ <draw_ops name="bg_button_active">
+ <include name="bg_active"/>
+ </draw_ops>
+
+ <draw_ops name="bg_button_inactive">
+ <include name="bg_inactive"/>
+ </draw_ops>
+
+ <draw_ops name="bg_title_active">
+ <include name="bg_active"/>
+ </draw_ops>
+
+ <draw_ops name="bg_title_inactive">
+ <include name="bg_inactive"/>
+ </draw_ops>
+
+ <!-- Buttons -->
+
+ <draw_ops name="button_pressed_bg">
+ <gradient type="vertical" x="0" y="0" width="width" height="height" alpha="0.25">
+ <color value="shade/gtk:bg[SELECTED]/0.75"/>
+ <color value="shade/gtk:bg[SELECTED]/0.5"/>
+ </gradient>
+ </draw_ops>
+
+ <draw_ops name="button_prelight_bg">
+ <gradient type="vertical" x="0" y="0" width="width" height="height" alpha="0.25">
+ <color value="shade/gtk:bg[SELECTED]/2.0"/>
+ <color value="shade/gtk:bg[SELECTED]/1.5"/>
+ </gradient>
+ </draw_ops>
+
+ <draw_ops name="menu_button">
+ <include name="bg_button_active"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" width="2" x1="ButtonIPad+1" y1="width/2+2" x2="(width-ButtonIPad)/2+1" y2="width/2+2"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" width="2" x1="ButtonIPad+1" y1="width/2-2" x2="(width-ButtonIPad)/2+1" y2="width/2-2"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" width="2" x1="width-ButtonIPad-1" y1="width/2+2" x2="width-(width-ButtonIPad)/2-1" y2="width/2+2"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" width="2" x1="width-ButtonIPad-1" y1="width/2-2" x2="width-(width-ButtonIPad)/2-1" y2="width/2-2"/>
+ </draw_ops>
+
+ <draw_ops name="menu_button_pressed">
+ <include name="menu_button"/>
+ <include name="button_pressed_bg"/>
+ </draw_ops>
+
+ <draw_ops name="menu_button_prelight">
+ <include name="menu_button"/>
+ <include name="button_prelight_bg"/>
+ </draw_ops>
+
+ <draw_ops name="menu_button_unfocused">
+ <include name="bg_button_inactive"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" width="2" x1="ButtonIPad+1" y1="width/2+2" x2="(width-ButtonIPad)/2+1" y2="width/2+2"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" width="2" x1="ButtonIPad+1" y1="width/2-2" x2="(width-ButtonIPad)/2+1" y2="width/2-2"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" width="2" x1="width-ButtonIPad-1" y1="width/2+2" x2="width-(width-ButtonIPad)/2-1" y2="width/2+2"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" width="2" x1="width-ButtonIPad-1" y1="width/2-2" x2="width-(width-ButtonIPad)/2-1" y2="width/2-2"/>
+ </draw_ops>
+
+ <draw_ops name="minimize_button">
+ <include name="bg_button_active"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75"
+ x1="ButtonIPad"
+ y1="height - ButtonIPad - ThickLineWidth + 1"
+ x2="width - ButtonIPad"
+ y2="height - ButtonIPad - ThickLineWidth + 1"
+ width="3"/> <!-- FIXME allow a constant here -->
+ </draw_ops>
+
+ <draw_ops name="minimize_button_pressed">
+ <include name="minimize_button"/>
+ <include name="button_pressed_bg"/>
+ </draw_ops>
+
+ <draw_ops name="minimize_button_prelight">
+ <include name="minimize_button"/>
+ <include name="button_prelight_bg"/>
+ </draw_ops>
+
+ <draw_ops name="minimize_button_unfocused">
+ <include name="bg_button_inactive"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35"
+ x1="ButtonIPad"
+ y1="height - ButtonIPad - ThickLineWidth + 1"
+ x2="width - ButtonIPad"
+ y2="height - ButtonIPad - ThickLineWidth + 1"
+ width="3"/> <!-- FIXME allow a constant here -->
+ </draw_ops>
+
+ <draw_ops name="maximize_button">
+ <include name="bg_button_active"/>
+ <rectangle color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" filled="false"
+ x="ButtonIPad" y="ButtonIPad" width="width-ButtonIPad*2-1" height="height-ButtonIPad*2-1"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" width="3"
+ x1="ButtonIPad" y1="ButtonIPad+1" x2="width-ButtonIPad" y2="ButtonIPad+1"/>
+ </draw_ops>
+
+ <draw_ops name="maximize_button_pressed">
+ <include name="maximize_button"/>
+ <include name="button_pressed_bg"/>
+ </draw_ops>
+
+ <draw_ops name="maximize_button_prelight">
+ <include name="maximize_button"/>
+ <include name="button_prelight_bg"/>
+ </draw_ops>
+
+ <draw_ops name="maximize_button_unfocused">
+ <include name="bg_button_inactive"/>
+ <rectangle color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" filled="false"
+ x="ButtonIPad" y="ButtonIPad" width="width-ButtonIPad*2-1" height="height-ButtonIPad*2-1"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" width="3"
+ x1="ButtonIPad" y1="ButtonIPad+1" x2="width-ButtonIPad" y2="ButtonIPad+1"/>
+ </draw_ops>
+
+ <draw_ops name="mini_window_icon">
+ <rectangle color="gtk:bg[SELECTED]" filled="true"
+ x="0" y="0" width="width-1" height="height-1"/>
+ <rectangle color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" filled="false"
+ x="0" y="0" width="width-1" height="height-1"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75" width="2"
+ x1="0" y1="1" x2="width" y2="1"/>
+ </draw_ops>
+
+ <draw_ops name="mini_window_icon_unfocused">
+ <rectangle color="gtk:bg[NORMAL]" filled="true"
+ x="0" y="0" width="width-1" height="height-1"/>
+ <rectangle color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" filled="false"
+ x="0" y="0" width="width-1" height="height-1"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35" width="2"
+ x1="0" y1="1" x2="width" y2="1"/>
+ </draw_ops>
+
+ <draw_ops name="restore_button">
+ <include name="bg_button_active"/>
+ <include name="mini_window_icon"
+ x="3 + ButtonIPad" y="ButtonIPad"
+ width="width - 7 - ButtonIPad"
+ height="height - 7 - ButtonIPad"/>
+ <include name="mini_window_icon"
+ x="ButtonIPad" y="3 + ButtonIPad"
+ width="width - 7 - ButtonIPad"
+ height="height - 7 - ButtonIPad"/>
+ </draw_ops>
+
+ <draw_ops name="restore_button_pressed">
+ <include name="restore_button"/>
+ <include name="button_pressed_bg"/>
+ </draw_ops>
+
+ <draw_ops name="restore_button_prelight">
+ <include name="restore_button"/>
+ <include name="button_prelight_bg"/>
+ </draw_ops>
+
+ <draw_ops name="restore_button_unfocused">
+ <include name="bg_button_inactive"/>
+ <include name="mini_window_icon_unfocused"
+ x="3 + ButtonIPad" y="ButtonIPad"
+ width="width - 7 - ButtonIPad"
+ height="height - 7 - ButtonIPad"/>
+ <include name="mini_window_icon_unfocused"
+ x="ButtonIPad" y="3 + ButtonIPad"
+ width="width - 7 - ButtonIPad"
+ height="height - 7 - ButtonIPad"/>
+ </draw_ops>
+
+ <draw_ops name="close_button">
+ <include name="bg_button_active"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75"
+ width="2"
+ x1="ButtonIPad" y1="ButtonIPad"
+ x2="width - ButtonIPad - 1" y2="height - ButtonIPad - 1"/>
+ <line color="blend/gtk:bg[SELECTED]/gtk:fg[SELECTED]/0.75"
+ width="2"
+ x1="ButtonIPad" y1="height - ButtonIPad - 1"
+ x2="width - ButtonIPad - 1" y2="ButtonIPad"/>
+ </draw_ops>
+
+ <draw_ops name="close_button_pressed">
+ <include name="close_button"/>
+ <include name="button_pressed_bg"/>
+ </draw_ops>
+
+ <draw_ops name="close_button_prelight">
+ <include name="close_button"/>
+ <include name="button_prelight_bg"/>
+ </draw_ops>
+
+ <draw_ops name="close_button_unfocused">
+ <include name="bg_button_inactive"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35"
+ width="2"
+ x1="ButtonIPad" y1="ButtonIPad"
+ x2="width - ButtonIPad - 1" y2="height - ButtonIPad - 1"/>
+ <line color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35"
+ width="2"
+ x1="ButtonIPad" y1="height - ButtonIPad - 1"
+ x2="width - ButtonIPad - 1" y2="ButtonIPad"/>
+ </draw_ops>
+
+ <draw_ops name="outer_bevel">
+ <rectangle color="#000000"
+ x="0" y="0" width="width-1" height="height-1"/>
+ <line color="gtk:light[NORMAL]"
+ x1="1" y1="1" x2="1" y2="height-2"/>
+ <line color="gtk:light[NORMAL]"
+ x1="1" y1="1" x2="width-2" y2="1"/>
+ <line color="gtk:dark[NORMAL]"
+ x1="width-2" y1="1" x2="width-2" y2="height-2"/>
+ <line color="gtk:dark[NORMAL]"
+ x1="1" y1="height-2" x2="width-2" y2="height-2"/>
+ </draw_ops>
+
+ <draw_ops name="blank">
+ <!-- nothing -->
+ </draw_ops>
+
+ <draw_ops name="focus_outline">
+ <rectangle color="#000000"
+ x="left_width-1" y="top_height-1"
+ width="width-left_width-right_width+1"
+ height="height-top_height-bottom_height+1"/>
+ </draw_ops>
+
+ <draw_ops name="focus_background">
+ <include name="outer_bevel"/>
+ <include name="focus_outline"/>
+ </draw_ops>
+
+ <draw_ops name="title_text_focused_with_icon">
+ <clip x="0" y="0" width="width" height="height"/>
+ <title color="gtk:fg[SELECTED]"
+ x="(0 `max` (width-title_width-mini_icon_width-IconTitleSpacing)) / 2 + mini_icon_width + IconTitleSpacing"
+ y="((height - title_height) / 2) `max` 0"/>
+ <icon x="(0 `max` (width-title_width-mini_icon_width-IconTitleSpacing)) / 2"
+ y="(height-mini_icon_height) / 2"
+ width="mini_icon_width" height="mini_icon_height"/>
+ </draw_ops>
+
+ <draw_ops name="title_text_focused_no_icon">
+ <clip x="0" y="0" width="width" height="height"/>
+ <title color="gtk:fg[SELECTED]"
+ x="(0 `max` (width-title_width)) / 2"
+ y="((height - title_height) / 2) `max` 0"/>
+ </draw_ops>
+
+ <draw_ops name="title_text_with_icon">
+ <clip x="0" y="0" width="width" height="height"/>
+ <title color="gtk:fg[INSENSITIVE]"
+ x="(0 `max` (width-title_width-mini_icon_width-IconTitleSpacing)) / 2 + mini_icon_width + IconTitleSpacing"
+ y="((height - title_height) / 2) `max` 0"/>
+ <icon x="(0 `max` (width-title_width-mini_icon_width-IconTitleSpacing)) / 2"
+ y="(height-mini_icon_height) / 2"
+ width="mini_icon_width" height="mini_icon_height"/>
+ </draw_ops>
+
+ <draw_ops name="title_text_no_icon">
+ <clip x="0" y="0" width="width" height="height"/>
+ <title color="blend/gtk:fg[INSENSITIVE]/gtk:bg[INSENSITIVE]/0.35"
+ x="(0 `max` (width-title_width)) / 2"
+ y="((height - title_height) / 2) `max` 0"/>
+ </draw_ops>
+
+ <draw_ops name="title_normal">
+ <include name="bg_title_inactive"/>
+ <include name="title_text_no_icon"/>
+ </draw_ops>
+
+ <draw_ops name="title_focused">
+ <include name="bg_title_active"/>
+ <include name="title_text_focused_no_icon"/>
+ </draw_ops>
+
+ <draw_ops name="title_utility">
+ <include name="title_text_no_icon"/>
+ </draw_ops>
+
+ <draw_ops name="title_utility_focused">
+ <include name="bg_title_active"/>
+ <include name="title_text_focused_no_icon"/>
+ </draw_ops>
+
+ <frame_style name="normal_unfocused" geometry="normal">
+ <piece position="entire_background" draw_ops="focus_background"/>
+ <piece position="title" draw_ops="title_normal"/>
+
+ <!-- we don't specify for prelight, so normal is used -->
+ <button function="close" state="normal" draw_ops="close_button_unfocused"/>
+ <button function="close" state="pressed" draw_ops="close_button_pressed"/>
+ <button function="minimize" state="normal" draw_ops="minimize_button_unfocused"/>
+ <button function="minimize" state="pressed" draw_ops="minimize_button_pressed"/>
+ <button function="maximize" state="normal" draw_ops="maximize_button_unfocused"/>
+ <button function="maximize" state="pressed" draw_ops="maximize_button_pressed"/>
+ <button function="menu" state="normal" draw_ops="menu_button_unfocused"/>
+ <button function="menu" state="pressed" draw_ops="menu_button_pressed"/>
+ </frame_style>
+
+ <frame_style name="normal_focused" geometry="normal">
+ <piece position="entire_background" draw_ops="focus_background"/>
+ <piece position="title" draw_ops="title_focused"/>
+
+ <!-- we don't specify for prelight, so normal is used -->
+ <button function="close" state="normal" draw_ops="close_button"/>
+ <button function="close" state="pressed" draw_ops="close_button_pressed"/>
+ <button function="close" state="prelight" draw_ops="close_button_prelight"/>
+ <button function="minimize" state="normal" draw_ops="minimize_button"/>
+ <button function="minimize" state="pressed" draw_ops="minimize_button_pressed"/>
+ <button function="minimize" state="prelight" draw_ops="minimize_button_prelight"/>
+ <button function="maximize" state="normal" draw_ops="maximize_button"/>
+ <button function="maximize" state="pressed" draw_ops="maximize_button_pressed"/>
+ <button function="maximize" state="prelight" draw_ops="maximize_button_prelight"/>
+ <button function="menu" state="normal" draw_ops="menu_button"/>
+ <button function="menu" state="pressed" draw_ops="menu_button_pressed"/>
+ <button function="menu" state="prelight" draw_ops="menu_button_prelight"/>
+ </frame_style>
+
+ <frame_style name="maximized_unfocused" geometry="normal_small_borders" parent="normal_unfocused">
+ <piece position="entire_background" draw_ops="blank"/>
+ <button function="maximize" state="normal" draw_ops="restore_button_unfocused"/>
+ <button function="maximize" state="pressed" draw_ops="restore_button_pressed"/>
+ </frame_style>
+
+ <frame_style name="maximized_focused" geometry="normal_small_borders" parent="normal_focused">
+ <piece position="entire_background" draw_ops="focus_outline"/>
+ <button function="maximize" state="normal" draw_ops="restore_button"/>
+ <button function="maximize" state="pressed" draw_ops="restore_button_pressed"/>
+ <button function="maximize" state="prelight" draw_ops="restore_button_prelight"/>
+ </frame_style>
+
+ <frame_style name="utility_unfocused" geometry="utility" parent="normal_unfocused">
+ <piece position="title" draw_ops="title_utility"/>
+ </frame_style>
+
+ <frame_style name="utility_focused" geometry="utility" parent="normal_focused">
+ <piece position="title" draw_ops="title_utility_focused"/>
+ </frame_style>
+
+ <frame_style name="border" geometry="border" parent="normal_unfocused">
+ <piece position="entire_background" draw_ops="outer_bevel"/>
+ <piece position="title" draw_ops="blank"/>
+ </frame_style>
+
+ <frame_style_set name="normal">
+ <frame focus="yes" state="normal" resize="both" style="normal_focused"/>
+ <frame focus="no" state="normal" resize="both" style="normal_unfocused"/>
+ <frame focus="yes" state="maximized" style="maximized_focused"/>
+ <frame focus="no" state="maximized" style="maximized_unfocused"/>
+ <frame focus="yes" state="shaded" style="normal_focused"/>
+ <frame focus="no" state="shaded" style="normal_unfocused"/>
+ <frame focus="yes" state="maximized_and_shaded" style="maximized_focused"/>
+ <frame focus="no" state="maximized_and_shaded" style="maximized_unfocused"/>
+ </frame_style_set>
+
+ <frame_style_set name="utility" parent="normal">
+ <frame focus="yes" state="normal" resize="both" style="utility_focused"/>
+ <frame focus="no" state="normal" resize="both" style="utility_unfocused"/>
+ <!-- this is a bunch of crack since utility windows shouldn't be maximized -->
+ <frame focus="yes" state="maximized" style="utility_focused"/>
+ <frame focus="no" state="maximized" style="utility_unfocused"/>
+ <frame focus="yes" state="shaded" style="utility_focused"/>
+ <frame focus="no" state="shaded" style="utility_unfocused"/>
+ <frame focus="yes" state="maximized_and_shaded" style="utility_focused"/>
+ <frame focus="no" state="maximized_and_shaded" style="utility_unfocused"/>
+ </frame_style_set>
+
+ <frame_style_set name="border">
+ <frame focus="yes" state="normal" resize="both" style="border"/>
+ <frame focus="no" state="normal" resize="both" style="border"/>
+ <frame focus="yes" state="maximized" style="border"/>
+ <frame focus="no" state="maximized" style="border"/>
+ <frame focus="yes" state="shaded" style="border"/>
+ <frame focus="no" state="shaded" style="border"/>
+ <frame focus="yes" state="maximized_and_shaded" style="border"/>
+ <frame focus="no" state="maximized_and_shaded" style="border"/>
+ </frame_style_set>
+
+ <window type="normal" style_set="normal"/>
+ <window type="dialog" style_set="normal"/>
+ <window type="modal_dialog" style_set="normal"/>
+ <window type="menu" style_set="normal"/>
+ <window type="utility" style_set="utility"/>
+ <window type="border" style_set="border"/>
+
+ <menu_icon function="close" state="normal" draw_ops="close_button"/>
+ <menu_icon function="maximize" state="normal" draw_ops="maximize_button"/>
+ <menu_icon function="unmaximize" state="normal" draw_ops="restore_button"/>
+ <menu_icon function="minimize" state="normal" draw_ops="minimize_button"/>
+
+</metacity_theme>
diff --git a/src/window.c b/src/window.c
index 157eea2e..58524371 100644
--- a/src/window.c
+++ b/src/window.c
@@ -613,7 +613,8 @@ meta_window_new (MetaDisplay *display, Window xwindow,
* area (bit of a hack here). Assume undecorated windows
* probably don't intend to be maximized.
*/
- if (window->has_maximize_func && window->decorated)
+ if (window->has_maximize_func && window->decorated &&
+ !window->fullscreen)
{
MetaRectangle workarea;
MetaRectangle outer;
@@ -5073,7 +5074,7 @@ recalc_window_features (MetaWindow *window)
}
/* no shading if not decorated */
- if (!window->decorated)
+ if (!window->decorated || window->border_only)
window->has_shade_func = FALSE;
window->skip_taskbar = FALSE;