From: Aurelien Gateau Date: Thu, 16 Dec 2010 11:17:14 +0100 Subject: [PATCH] Added an option to make it possible to hide maximized titlebars bzr-revid: aurelien gateau canonical com-20101216101714-tyht142o66k25uaj --- a/src/core/prefs.c +++ b/src/core/prefs.c @@ -91,6 +91,7 @@ static gboolean resize_with_right_button static gboolean edge_tiling = FALSE; static gboolean force_fullscreen = TRUE; static gboolean alt_tab_thumbnails = FALSE; +static gboolean show_maximized_titlebars = FALSE; static GDesktopVisualBellType visual_bell_type = G_DESKTOP_VISUAL_BELL_FULLSCREEN_FLASH; static MetaButtonLayout button_layout; @@ -362,6 +363,14 @@ static MetaBoolPreference preferences_bo &alt_tab_thumbnails, FALSE, }, + { + { "show-maximized-titlebars", + SCHEMA_METACITY, + META_PREF_SHOW_MAXIMIZED_TITLEBARS, + }, + &show_maximized_titlebars, + FALSE, + }, { { NULL, 0, 0 }, NULL, FALSE }, }; @@ -985,6 +994,12 @@ meta_prefs_get_raise_on_click (void) return raise_on_click; } +gboolean +meta_prefs_get_show_maximized_titlebars (void) +{ + return show_maximized_titlebars; +} + const char* meta_prefs_get_theme (void) { @@ -1510,6 +1525,9 @@ meta_preference_to_string (MetaPreferenc case META_PREF_ALT_TAB_THUMBNAILS: return "ALT_TAB_THUMBNAILS"; + case META_PREF_SHOW_MAXIMIZED_TITLEBARS: + return "META_PREF_SHOW_MAXIMIZED_TITLEBARS"; + default: break; } --- a/src/include/prefs.h +++ b/src/include/prefs.h @@ -62,7 +62,8 @@ typedef enum META_PREF_EDGE_TILING, META_PREF_FORCE_FULLSCREEN, META_PREF_PLACEMENT_MODE, - META_PREF_ALT_TAB_THUMBNAILS + META_PREF_ALT_TAB_THUMBNAILS, + META_PREF_SHOW_MAXIMIZED_TITLEBARS } MetaPreference; typedef enum @@ -92,6 +93,7 @@ GDesktopFocusMode meta_prefs_g GDesktopFocusNewWindows meta_prefs_get_focus_new_windows (void); gboolean meta_prefs_get_attach_modal_dialogs (void); gboolean meta_prefs_get_raise_on_click (void); +gboolean meta_prefs_get_show_maximized_titlebars (void); const char* meta_prefs_get_theme (void); /* returns NULL if GTK default should be used */ const PangoFontDescription* meta_prefs_get_titlebar_font (void); --- a/src/metacity-schemas.convert +++ b/src/metacity-schemas.convert @@ -2,3 +2,4 @@ compositing-manager = /apps/metacity/general/compositing_manager reduced-resources = /apps/metacity/general/reduced_resources side-by-side-tiling = /apps/metacity/general/side_by_side_tiling +show-maximized-titlebars = /apps/metacity/general/show_maximized_titlebars --- a/src/org.gnome.metacity.gschema.xml.in +++ b/src/org.gnome.metacity.gschema.xml.in @@ -10,6 +10,7 @@ + true <_summary>Compositing Manager @@ -17,6 +18,7 @@ Determines whether Metacity is a compositing manager. + false <_summary>If true, trade off usability for less resource usage @@ -70,6 +72,11 @@ and so forth. + + true + <_summary>Whether to show title bars for maximized windows + <_description>Set this to false to hide title bars for maximized windows. + --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -86,6 +86,7 @@ static MetaUIFrame* meta_frames_lookup_w static void meta_frames_font_changed (MetaFrames *frames); static void meta_frames_button_layout_changed (MetaFrames *frames); +static void meta_frames_show_maximized_titlebars_changed (MetaFrames *frames); static GdkRectangle* control_rect (MetaFrameControl control, MetaFrameGeometry *fgeom); @@ -173,6 +174,8 @@ prefs_changed_callback (MetaPreference p meta_frames_font_changed (META_FRAMES (data)); else if (pref == META_PREF_BUTTON_LAYOUT) meta_frames_button_layout_changed (META_FRAMES (data)); + else if (pref == META_PREF_SHOW_MAXIMIZED_TITLEBARS) + meta_frames_show_maximized_titlebars_changed (META_FRAMES (data)); } static MetaStyleInfo * @@ -1419,6 +1422,16 @@ clear_tip (MetaFrames *frames) meta_fixed_tip_hide (); } +void meta_frames_show_maximized_titlebars_changed (MetaFrames *frames) +{ + MetaTheme *theme = meta_theme_get_current (); + if (theme) + { + meta_theme_set_show_maximized_titlebars (theme, + meta_prefs_get_show_maximized_titlebars ()); + } +} + static void redraw_control (MetaFrames *frames, MetaUIFrame *frame, --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -472,6 +472,9 @@ meta_frame_layout_get_borders (const Met borders->total.right = borders->invisible.right + borders->visible.right; borders->total.bottom = borders->invisible.bottom + borders->visible.bottom; borders->total.top = borders->invisible.top + borders->visible.top; + + if ((flags & META_FRAME_MAXIMIZED) && !current->show_maximized_titlebars) + borders->visible.top = 0; } static MetaButtonType @@ -5707,6 +5710,9 @@ meta_theme_new (void) theme->quark_title_height = g_quark_from_static_string ("title_height"); theme->quark_frame_x_center = g_quark_from_static_string ("frame_x_center"); theme->quark_frame_y_center = g_quark_from_static_string ("frame_y_center"); + + theme->show_maximized_titlebars = TRUE; + return theme; } @@ -7340,3 +7346,9 @@ meta_theme_earliest_version_with_button return 1000; } } + +void +meta_theme_set_show_maximized_titlebars (MetaTheme *theme, gboolean show) +{ + theme->show_maximized_titlebars = show; +} --- a/src/ui/theme.h +++ b/src/ui/theme.h @@ -842,6 +842,7 @@ struct _MetaTheme guint format_version; gboolean is_gtk_theme; + gboolean show_maximized_titlebars; /** Symbol table of integer constants. */ GHashTable *integer_constants; @@ -1138,6 +1139,7 @@ void meta_gtk_style_get guint meta_theme_earliest_version_with_button (MetaButtonType type); +void meta_theme_set_show_maximized_titlebars (MetaTheme *theme, gboolean); #define META_THEME_ALLOWS(theme, feature) (theme->format_version >= feature) --- a/src/ui/ui.c +++ b/src/ui/ui.c @@ -737,6 +737,12 @@ meta_ui_set_current_theme (const char *n gboolean force_reload) { meta_theme_set_current (name, force_reload); + MetaTheme *theme = meta_theme_get_current (); + if (theme) + { + meta_theme_set_show_maximized_titlebars (theme, + meta_prefs_get_show_maximized_titlebars ()); + } meta_invalidate_default_icons (); }