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.
This commit is contained in:
Havoc Pennington 2002-07-25 02:45:38 +00:00 committed by Havoc Pennington
parent 98c3b06ffd
commit 9abae5b0a2
5 changed files with 497 additions and 54 deletions

View File

@ -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

57
README
View File

@ -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?

View File

@ -3,7 +3,8 @@ THEMES= \
Bright \
Crux \
Esco \
Gorilla
Gorilla \
Metabox
THEME_DIR=$(datadir)/themes
THEME_SUBDIR=metacity-1

View File

@ -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>

View File

@ -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;