[metacity] theme: fix button background 1) Added 'no background' if there is only one button and backgrounds
- From: Alberts MuktupÄvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] theme: fix button background 1) Added 'no background' if there is only one button and backgrounds
- Date: Mon, 9 Jun 2014 18:06:41 +0000 (UTC)
commit 113b965f8cc260117fc4690be2dcc60b8a77deb1
Author: Alberts MuktupÄvels <alberts muktupavels gmail com>
Date: Mon Jun 9 21:03:51 2014 +0300
theme: fix button background
1) Added 'no background' if there is only one button and backgrounds
no more overlap if transparency used.
2) Corrected bug with left button clickable region when window is
maximized.
Origin: Ubuntu
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=608511
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/metacity/+bug/535088
Author: Nicolas Desfontaine <noop free fr>
src/ui/theme.c | 51 +++++++++++++++++++++++++--------------------------
src/ui/theme.h | 2 ++
2 files changed, 27 insertions(+), 26 deletions(-)
---
diff --git a/src/ui/theme.c b/src/ui/theme.c
index ed25877..a13c773 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -729,8 +729,13 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
for (i = 0; i < n_left; i++)
{
- if (i == 0) /* prefer left background if only one button */
- left_bg_rects[i] = &fgeom->left_left_background;
+ if (i == 0) /* For the first button (From left to right) */
+ {
+ if (n_left > 1) /* Set left_left_background if we have more than one button */
+ left_bg_rects[i] = &fgeom->left_left_background;
+ else /* No background if we have only one single button */
+ left_bg_rects[i] = &fgeom->left_single_background;
+ }
else if (i == (n_left - 1))
left_bg_rects[i] = &fgeom->left_right_background;
else
@@ -739,9 +744,13 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
for (i = 0; i < n_right; i++)
{
- /* prefer right background if only one button */
- if (i == (n_right - 1))
- right_bg_rects[i] = &fgeom->right_right_background;
+ if (i == (n_right - 1)) /* For the first button (From right to left) */
+ {
+ if (n_right > 1) /* Set right_right_background if we have more than one button */
+ right_bg_rects[i] = &fgeom->right_right_background;
+ else /* No background if we have only one single button */
+ right_bg_rects[i] = &fgeom->right_single_background;
+ }
else if (i == 0)
right_bg_rects[i] = &fgeom->right_left_background;
else
@@ -870,9 +879,9 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
flags & META_FRAME_TILED_RIGHT)
{
rect->clickable.x = rect->visible.x;
- rect->clickable.y = 0;
- rect->clickable.width = rect->visible.width;
- rect->clickable.height = button_height + button_y;
+ rect->clickable.y = rect->visible.y;
+ rect->clickable.width = button_width;
+ rect->clickable.height = button_height;
if (i == n_right - 1)
rect->clickable.width += layout->right_titlebar_edge + layout->right_width +
layout->button_border.right;
@@ -908,23 +917,13 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
if (flags & META_FRAME_MAXIMIZED)
{
- if (i==0)
- {
- rect->clickable.x = 0;
- rect->clickable.width = button_width + x;
- }
- else
- {
- rect->clickable.x = rect->visible.x;
- rect->clickable.width = button_width;
- }
-
- rect->clickable.y = 0;
- rect->clickable.height = button_height + button_y;
- }
- else
- g_memmove (&(rect->clickable), &(rect->visible), sizeof(rect->clickable));
-
+ rect->clickable.x = rect->visible.x;
+ rect->clickable.y = rect->visible.y;
+ rect->clickable.width = button_width;
+ rect->clickable.height = button_height;
+ }
+ else
+ g_memmove (&(rect->clickable), &(rect->visible), sizeof(rect->clickable));
x = rect->visible.x + rect->visible.width + layout->button_border.right;
if (left_buttons_has_spacer[i])
@@ -4655,7 +4654,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
/* MIDDLE_BACKGROUND type may get drawn more than once */
if ((j == META_BUTTON_TYPE_RIGHT_MIDDLE_BACKGROUND ||
j == META_BUTTON_TYPE_LEFT_MIDDLE_BACKGROUND) &&
- middle_bg_offset < MAX_MIDDLE_BACKGROUNDS)
+ (middle_bg_offset < (MAX_MIDDLE_BACKGROUNDS - 1)))
{
++middle_bg_offset;
}
diff --git a/src/ui/theme.h b/src/ui/theme.h
index cea966c..5a07d54 100644
--- a/src/ui/theme.h
+++ b/src/ui/theme.h
@@ -246,9 +246,11 @@ struct _MetaFrameGeometry
MetaButtonSpace unstick_rect;
#define MAX_MIDDLE_BACKGROUNDS (MAX_BUTTONS_PER_CORNER - 2)
+ GdkRectangle left_single_background;
GdkRectangle left_left_background;
GdkRectangle left_middle_backgrounds[MAX_MIDDLE_BACKGROUNDS];
GdkRectangle left_right_background;
+ GdkRectangle right_single_background;
GdkRectangle right_left_background;
GdkRectangle right_middle_backgrounds[MAX_MIDDLE_BACKGROUNDS];
GdkRectangle right_right_background;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]