[metacity/wip/gtk-theme: 25/52] ui: Replace inline borders in MetaFrameGeometry with MetaFrameBorder
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity/wip/gtk-theme: 25/52] ui: Replace inline borders in MetaFrameGeometry with MetaFrameBorder
- Date: Wed, 7 Jan 2015 12:36:32 +0000 (UTC)
commit 2f7771b47db74a922358f44e0c323621a22c8d6a
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Tue Jul 12 01:16:48 2011 -0400
ui: Replace inline borders in MetaFrameGeometry with MetaFrameBorder
... and start compensating for invisible borders in all of the math.
https://bugzilla.gnome.org/show_bug.cgi?id=644930
NOTE: Updated for metacity...
src/ui/frames.c | 206 ++++++++++++++++++++++++++++++------------------------
src/ui/theme.c | 90 ++++++++++++------------
src/ui/theme.h | 5 +-
3 files changed, 160 insertions(+), 141 deletions(-)
---
diff --git a/src/ui/frames.c b/src/ui/frames.c
index 0a4c5a1..806a86d 100644
--- a/src/ui/frames.c
+++ b/src/ui/frames.c
@@ -872,18 +872,51 @@ apply_cairo_region_to_window (Display *display,
}
#endif
+/* The client rectangle surrounds client window; it subtracts both
+ * the visible and invisible borders from the frame window's size.
+ */
+static void
+get_client_rect (MetaFrameGeometry *fgeom,
+ int window_width,
+ int window_height,
+ cairo_rectangle_int_t *rect)
+{
+ rect->x = fgeom->borders.total.left;
+ rect->y = fgeom->borders.total.top;
+ rect->width = window_width - fgeom->borders.total.right - rect->x;
+ rect->height = window_height - fgeom->borders.total.bottom - rect->y;
+}
+
+/* The visible frame rectangle surrounds the visible portion of the
+ * frame window; it subtracts only the invisible borders from the frame
+ * window's size.
+ */
+static void
+get_visible_frame_rect (MetaFrameGeometry *fgeom,
+ int window_width,
+ int window_height,
+ cairo_rectangle_int_t *rect)
+{
+ rect->x = fgeom->borders.invisible.left;
+ rect->y = fgeom->borders.invisible.top;
+ rect->width = window_width - fgeom->borders.invisible.right - rect->x;
+ rect->height = window_height - fgeom->borders.invisible.bottom - rect->y;
+}
+
static cairo_region_t *
-get_bounds_region (MetaFrames *frames,
- MetaUIFrame *frame,
- MetaFrameGeometry *fgeom,
- int window_width,
- int window_height)
+get_visible_region (MetaFrames *frames,
+ MetaUIFrame *frame,
+ MetaFrameGeometry *fgeom,
+ int window_width,
+ int window_height)
{
cairo_region_t *corners_region;
- cairo_region_t *bounds_region;
+ cairo_region_t *visible_region;
cairo_rectangle_int_t rect;
+ cairo_rectangle_int_t frame_rect;
corners_region = cairo_region_create ();
+ get_visible_frame_rect (fgeom, window_width, window_height, &frame_rect);
if (fgeom->top_left_corner_rounded_radius != 0)
{
@@ -894,8 +927,8 @@ get_bounds_region (MetaFrames *frames,
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
- rect.x = 0;
- rect.y = i;
+ rect.x = frame_rect.x;
+ rect.y = frame_rect.y + i;
rect.width = width;
rect.height = 1;
@@ -912,8 +945,8 @@ get_bounds_region (MetaFrames *frames,
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
- rect.x = window_width - width;
- rect.y = i;
+ rect.x = frame_rect.x + frame_rect.width - width;
+ rect.y = frame_rect.y + i;
rect.width = width;
rect.height = 1;
@@ -930,8 +963,8 @@ get_bounds_region (MetaFrames *frames,
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
- rect.x = 0;
- rect.y = window_height - i - 1;
+ rect.x = frame_rect.x;
+ rect.y = frame_rect.y + frame_rect.height - i - 1;
rect.width = width;
rect.height = 1;
@@ -948,8 +981,8 @@ get_bounds_region (MetaFrames *frames,
for (i=0; i<corner; i++)
{
const int width = floor(0.5 + radius - sqrt(radius*radius - (radius-(i+0.5))*(radius-(i+0.5))));
- rect.x = window_width - width;
- rect.y = window_height - i - 1;
+ rect.x = frame_rect.x + frame_rect.width + width;
+ rect.y = frame_rect.y + frame_rect.height - i - 1;
rect.width = width;
rect.height = 1;
@@ -957,20 +990,11 @@ get_bounds_region (MetaFrames *frames,
}
}
- bounds_region = cairo_region_create ();
-
- rect.x = 0;
- rect.y = 0;
- rect.width = window_width;
- rect.height = window_height;
-
- cairo_region_union_rectangle (bounds_region, &rect);
-
- cairo_region_subtract (bounds_region, corners_region);
-
+ visible_region = cairo_region_create_rectangle (&frame_rect);
+ cairo_region_subtract (visible_region, corners_region);
cairo_region_destroy (corners_region);
- return bounds_region;
+ return visible_region;
}
static cairo_region_t *
@@ -980,10 +1004,10 @@ get_client_region (MetaFrameGeometry *fgeom,
{
cairo_rectangle_int_t rect;
- rect.x = fgeom->left_width;
- rect.y = fgeom->top_height;
- rect.width = window_width - fgeom->right_width - rect.x;
- rect.height = window_height - fgeom->bottom_height - rect.y;
+ rect.x = fgeom->borders.total.left;
+ rect.y = fgeom->borders.total.top;
+ rect.width = window_width - fgeom->borders.total.right - rect.x;
+ rect.height = window_height - fgeom->borders.total.bottom - rect.y;
return cairo_region_create_rectangle (&rect);
}
@@ -1035,11 +1059,11 @@ meta_frames_apply_shapes (MetaFrames *frames,
return; /* nothing to do */
}
- window_region = get_bounds_region (frames,
- frame,
- &fgeom,
- new_window_width,
- new_window_height);
+ window_region = get_visible_region (frames,
+ frame,
+ &fgeom,
+ new_window_width,
+ new_window_height);
if (window_has_shape)
{
@@ -1083,8 +1107,8 @@ meta_frames_apply_shapes (MetaFrames *frames,
META_CORE_GET_END);
XShapeCombineShape (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), shape_window, ShapeBounding,
- fgeom.left_width,
- fgeom.top_height,
+ fgeom.borders.total.left,
+ fgeom.borders.total.top,
client_window,
ShapeBounding,
ShapeSet);
@@ -1144,11 +1168,11 @@ meta_frames_get_frame_bounds (MetaFrames *frames,
meta_frames_calc_geometry (frames, frame, &fgeom);
- return get_bounds_region (frames,
- frame,
- &fgeom,
- window_width,
- window_height);
+ return get_visible_region (frames,
+ frame,
+ &fgeom,
+ window_width,
+ window_height);
}
void
@@ -2217,7 +2241,6 @@ static void
populate_cache (MetaFrames *frames,
MetaUIFrame *frame)
{
- int top, bottom, left, right;
MetaFrameBorders borders;
int width, height;
int frame_width, frame_height, screen_width, screen_height;
@@ -2250,34 +2273,42 @@ populate_cache (MetaFrames *frames,
frame_flags,
&borders);
- top = borders.visible.top;
- left = borders.visible.left;
- right = borders.visible.right;
- bottom = borders.visible.bottom;
-
pixels = get_cache (frames, frame);
- /* Setup the rectangles for the four frame borders. First top, then
- left, right and bottom. */
- pixels->piece[0].rect.x = 0;
- pixels->piece[0].rect.y = 0;
- pixels->piece[0].rect.width = left + width + right;
- pixels->piece[0].rect.height = top;
+ /* Setup the rectangles for the four visible frame borders. First top, then
+ * left, right and bottom. Top and bottom extend to the invisible borders
+ * while left and right snugly fit in between:
+ * -----
+ * | |
+ * -----
+ */
- pixels->piece[1].rect.x = 0;
- pixels->piece[1].rect.y = top;
- pixels->piece[1].rect.width = left;
+ /* width and height refer to the client window's
+ * size without any border added. */
+
+ /* top */
+ pixels->piece[0].rect.x = borders.invisible.left;
+ pixels->piece[0].rect.y = borders.invisible.top;
+ pixels->piece[0].rect.width = width + borders.visible.left + borders.visible.right;
+ pixels->piece[0].rect.height = borders.visible.top;
+
+ /* left */
+ pixels->piece[1].rect.x = borders.invisible.left;
+ pixels->piece[1].rect.y = borders.total.top;
pixels->piece[1].rect.height = height;
+ pixels->piece[1].rect.width = borders.visible.left;
- pixels->piece[2].rect.x = left + width;
- pixels->piece[2].rect.y = top;
- pixels->piece[2].rect.width = right;
+ /* right */
+ pixels->piece[2].rect.x = borders.total.left + width;
+ pixels->piece[2].rect.y = borders.total.top;
+ pixels->piece[2].rect.width = borders.visible.right;
pixels->piece[2].rect.height = height;
- pixels->piece[3].rect.x = 0;
- pixels->piece[3].rect.y = top + height;
- pixels->piece[3].rect.width = left + width + right;
- pixels->piece[3].rect.height = bottom;
+ /* bottom */
+ pixels->piece[3].rect.x = borders.invisible.left;
+ pixels->piece[3].rect.y = borders.total.top + height;
+ pixels->piece[3].rect.width = width + borders.visible.left + borders.visible.right;
+ pixels->piece[3].rect.height = borders.visible.bottom;
for (i = 0; i < 4; i++)
{
@@ -2352,8 +2383,8 @@ subtract_client_area (cairo_region_t *region,
type, frame->text_height, flags,
&borders);
- area.x = borders.visible.left;
- area.y = borders.visible.top;
+ area.x = borders.total.left;
+ area.y = borders.total.top;
tmp_region = cairo_region_create_rectangle (&area);
cairo_region_subtract (region, tmp_region);
@@ -2765,7 +2796,7 @@ control_rect (MetaFrameControl control,
}
#define RESIZE_EXTENDS 15
-#define TOP_RESIZE_HEIGHT 2
+#define TOP_RESIZE_HEIGHT 4
static MetaFrameControl
get_control (MetaFrames *frames,
MetaUIFrame *frame,
@@ -2777,11 +2808,7 @@ get_control (MetaFrames *frames,
GdkRectangle client;
meta_frames_calc_geometry (frames, frame, &fgeom);
-
- client.x = fgeom.left_width;
- client.y = fgeom.top_height;
- client.width = fgeom.width - fgeom.left_width - fgeom.right_width;
- client.height = fgeom.height - fgeom.top_height - fgeom.bottom_height;
+ get_client_rect (&fgeom, fgeom.width, fgeom.height, &client);
if (POINT_IN_RECT (x, y, client))
return META_FRAME_CONTROL_CLIENT_AREA;
@@ -2855,8 +2882,8 @@ get_control (MetaFrames *frames,
* in case of overlap.
*/
- if (y >= (fgeom.height - fgeom.bottom_height - RESIZE_EXTENDS) &&
- x >= (fgeom.width - fgeom.right_width - RESIZE_EXTENDS))
+ if (y >= (fgeom.height - fgeom.borders.total.bottom - RESIZE_EXTENDS) &&
+ x >= (fgeom.width - fgeom.borders.total.right - RESIZE_EXTENDS))
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_SE;
@@ -2865,8 +2892,8 @@ get_control (MetaFrames *frames,
else if (has_horiz)
return META_FRAME_CONTROL_RESIZE_E;
}
- else if (y >= (fgeom.height - fgeom.bottom_height - RESIZE_EXTENDS) &&
- x <= (fgeom.left_width + RESIZE_EXTENDS))
+ else if (y >= (fgeom.height - fgeom.borders.total.bottom - RESIZE_EXTENDS) &&
+ x <= (fgeom.borders.total.left + RESIZE_EXTENDS))
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_SW;
@@ -2875,8 +2902,8 @@ get_control (MetaFrames *frames,
else if (has_horiz)
return META_FRAME_CONTROL_RESIZE_W;
}
- else if (y < (fgeom.top_height + RESIZE_EXTENDS) &&
- x < RESIZE_EXTENDS)
+ else if (y < (fgeom.borders.invisible.top + RESIZE_EXTENDS) &&
+ x <= (fgeom.borders.total.left + RESIZE_EXTENDS))
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_NW;
@@ -2885,8 +2912,8 @@ get_control (MetaFrames *frames,
else if (has_horiz)
return META_FRAME_CONTROL_RESIZE_W;
}
- else if (y < (fgeom.top_height + RESIZE_EXTENDS) &&
- x >= (fgeom.width - RESIZE_EXTENDS))
+ else if (y < (fgeom.borders.invisible.top + RESIZE_EXTENDS) &&
+ x >= (fgeom.width - fgeom.borders.total.right - RESIZE_EXTENDS))
{
if (has_vert && has_horiz)
return META_FRAME_CONTROL_RESIZE_NE;
@@ -2895,33 +2922,28 @@ get_control (MetaFrames *frames,
else if (has_horiz)
return META_FRAME_CONTROL_RESIZE_E;
}
- else if (y >= (fgeom.height - fgeom.bottom_height - RESIZE_EXTENDS))
+ else if (y < (fgeom.borders.invisible.top + TOP_RESIZE_HEIGHT))
{
if (has_vert)
- return META_FRAME_CONTROL_RESIZE_S;
+ return META_FRAME_CONTROL_RESIZE_N;
}
- else if (y <= TOP_RESIZE_HEIGHT)
+ else if (y >= (fgeom.height - fgeom.borders.total.bottom - RESIZE_EXTENDS))
{
if (has_vert)
- return META_FRAME_CONTROL_RESIZE_N;
- else if (has_horiz)
- return META_FRAME_CONTROL_TITLE;
+ return META_FRAME_CONTROL_RESIZE_S;
}
- else if (x <= fgeom.left_width)
+ else if (x <= fgeom.borders.total.left + RESIZE_EXTENDS)
{
if (has_horiz)
return META_FRAME_CONTROL_RESIZE_W;
}
- else if (x >= (fgeom.width - fgeom.right_width))
+ else if (x >= (fgeom.width - fgeom.borders.total.right - RESIZE_EXTENDS))
{
if (has_horiz)
return META_FRAME_CONTROL_RESIZE_E;
}
- if (y >= fgeom.top_height)
- return META_FRAME_CONTROL_NONE;
- else
- return META_FRAME_CONTROL_TITLE;
+ return META_FRAME_CONTROL_NONE;
}
void
diff --git a/src/ui/theme.c b/src/ui/theme.c
index b4ff99a..6598178 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -740,15 +740,12 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
flags,
&borders);
- fgeom->left_width = borders.visible.left;
- fgeom->right_width = borders.visible.right;
- fgeom->top_height = borders.visible.top;
- fgeom->bottom_height = borders.visible.bottom;
+ fgeom->borders = borders;
- width = client_width + fgeom->left_width + fgeom->right_width;
+ width = client_width + borders.total.left + borders.total.right;
height = ((flags & META_FRAME_SHADED) ? 0: client_height) +
- fgeom->top_height + fgeom->bottom_height;
+ borders.total.top + borders.total.bottom;
fgeom->width = width;
fgeom->height = height;
@@ -765,7 +762,7 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
switch (layout->button_sizing)
{
case META_BUTTON_SIZING_ASPECT:
- button_height = fgeom->top_height - layout->button_border.top - layout->button_border.bottom;
+ button_height = borders.visible.top - layout->button_border.top - layout->button_border.bottom;
button_width = button_height / layout->button_aspect;
break;
case META_BUTTON_SIZING_FIXED:
@@ -966,11 +963,11 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
fgeom->n_right_buttons = n_right;
/* center buttons vertically */
- button_y = (fgeom->top_height -
- (button_height + layout->button_border.top + layout->button_border.bottom)) / 2 +
layout->button_border.top;
+ button_y = (borders.visible.top -
+ (button_height + layout->button_border.top + layout->button_border.bottom)) / 2 +
layout->button_border.top + borders.invisible.top;
/* right edge of farthest-right button */
- x = width - layout->right_titlebar_edge;
+ x = width - layout->right_titlebar_edge - borders.invisible.right;
i = n_right - 1;
while (i >= 0)
@@ -1034,7 +1031,7 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
/* Now x changes to be position from the left and we go through
* the left-side buttons
*/
- x = layout->left_titlebar_edge;
+ x = layout->left_titlebar_edge + borders.invisible.left;
for (i = 0; i < n_left; i++)
{
MetaButtonSpace *rect;
@@ -1077,9 +1074,9 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
* rather than centering it like the buttons
*/
fgeom->title_rect.x = x + layout->title_border.left;
- fgeom->title_rect.y = layout->title_border.top;
+ fgeom->title_rect.y = layout->title_border.top + borders.invisible.top;
fgeom->title_rect.width = title_right_edge - fgeom->title_rect.x;
- fgeom->title_rect.height = fgeom->top_height - layout->title_border.top - layout->title_border.bottom;
+ fgeom->title_rect.height = borders.visible.top - layout->title_border.top - layout->title_border.bottom;
/* Nuke title if it won't fit */
if (fgeom->title_rect.width < 0 ||
@@ -1099,14 +1096,14 @@ meta_frame_layout_calc_geometry (const MetaFrameLayout *layout,
fgeom->bottom_left_corner_rounded_radius = 0;
fgeom->bottom_right_corner_rounded_radius = 0;
- if (fgeom->top_height + fgeom->left_width >= min_size_for_rounding)
+ if (borders.visible.top + borders.visible.left >= min_size_for_rounding)
fgeom->top_left_corner_rounded_radius = layout->top_left_corner_rounded_radius;
- if (fgeom->top_height + fgeom->right_width >= min_size_for_rounding)
+ if (borders.visible.top + borders.visible.right >= min_size_for_rounding)
fgeom->top_right_corner_rounded_radius = layout->top_right_corner_rounded_radius;
- if (fgeom->bottom_height + fgeom->left_width >= min_size_for_rounding)
+ if (borders.visible.bottom + borders.visible.left >= min_size_for_rounding)
fgeom->bottom_left_corner_rounded_radius = layout->bottom_left_corner_rounded_radius;
- if (fgeom->bottom_height + fgeom->right_width >= min_size_for_rounding)
+ if (borders.visible.bottom + borders.visible.right >= min_size_for_rounding)
fgeom->bottom_right_corner_rounded_radius = layout->bottom_right_corner_rounded_radius;
}
@@ -3735,10 +3732,10 @@ fill_env (MetaPositionExprEnv *env,
env->object_height = -1;
if (info->fgeom)
{
- env->left_width = info->fgeom->left_width;
- env->right_width = info->fgeom->right_width;
- env->top_height = info->fgeom->top_height;
- env->bottom_height = info->fgeom->bottom_height;
+ env->left_width = info->fgeom->borders.visible.left;
+ env->right_width = info->fgeom->borders.visible.right;
+ env->top_height = info->fgeom->borders.visible.top;
+ env->bottom_height = info->fgeom->borders.visible.bottom;
env->frame_x_center = info->fgeom->width / 2 - logical_region.x;
env->frame_y_center = info->fgeom->height / 2 - logical_region.y;
}
@@ -4773,6 +4770,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
GdkPixbuf *icon)
{
int i, j;
+ GdkRectangle visible_rect;
GdkRectangle titlebar_rect;
GdkRectangle left_titlebar_edge;
GdkRectangle right_titlebar_edge;
@@ -4781,11 +4779,19 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
GdkRectangle left_edge, right_edge, bottom_edge;
PangoRectangle extents;
MetaDrawInfo draw_info;
+ const MetaFrameBorders *borders;
- titlebar_rect.x = 0;
- titlebar_rect.y = 0;
- titlebar_rect.width = fgeom->width;
- titlebar_rect.height = fgeom->top_height;
+ borders = &fgeom->borders;
+
+ visible_rect.x = borders->invisible.left;
+ visible_rect.y = borders->invisible.top;
+ visible_rect.width = fgeom->width - borders->invisible.left - borders->invisible.right;
+ visible_rect.height = fgeom->height - borders->invisible.top - borders->invisible.bottom;
+
+ titlebar_rect.x = visible_rect.x;
+ titlebar_rect.y = visible_rect.y;
+ titlebar_rect.width = visible_rect.width;
+ titlebar_rect.height = borders->visible.top;
left_titlebar_edge.x = titlebar_rect.x;
left_titlebar_edge.y = titlebar_rect.y + fgeom->top_titlebar_edge;
@@ -4807,20 +4813,20 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
bottom_titlebar_edge.height = fgeom->bottom_titlebar_edge;
bottom_titlebar_edge.y = titlebar_rect.y + titlebar_rect.height - bottom_titlebar_edge.height;
- left_edge.x = 0;
- left_edge.y = fgeom->top_height;
- left_edge.width = fgeom->left_width;
- left_edge.height = fgeom->height - fgeom->top_height - fgeom->bottom_height;
+ left_edge.x = visible_rect.x;
+ left_edge.y = visible_rect.y + borders->visible.top;
+ left_edge.width = borders->visible.left;
+ left_edge.height = visible_rect.height - borders->visible.top - borders->visible.bottom;
- right_edge.x = fgeom->width - fgeom->right_width;
- right_edge.y = fgeom->top_height;
- right_edge.width = fgeom->right_width;
- right_edge.height = fgeom->height - fgeom->top_height - fgeom->bottom_height;
+ right_edge.x = visible_rect.x + visible_rect.width - borders->visible.right;
+ right_edge.y = visible_rect.y + borders->visible.top;
+ right_edge.width = borders->visible.right;
+ right_edge.height = visible_rect.height - borders->visible.top - borders->visible.bottom;
- bottom_edge.x = 0;
- bottom_edge.y = fgeom->height - fgeom->bottom_height;
- bottom_edge.width = fgeom->width;
- bottom_edge.height = fgeom->bottom_height;
+ bottom_edge.x = visible_rect.x;
+ bottom_edge.y = visible_rect.y + visible_rect.height - borders->visible.bottom;
+ bottom_edge.width = visible_rect.width;
+ bottom_edge.height = borders->visible.bottom;
if (title_layout)
pango_layout_get_pixel_extents (title_layout,
@@ -4842,10 +4848,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
switch ((MetaFramePiece) i)
{
case META_FRAME_PIECE_ENTIRE_BACKGROUND:
- rect.x = 0;
- rect.y = 0;
- rect.width = fgeom->width;
- rect.height = fgeom->height;
+ rect = visible_rect;
break;
case META_FRAME_PIECE_TITLEBAR:
@@ -4893,10 +4896,7 @@ meta_frame_style_draw_with_style (MetaFrameStyle *style,
break;
case META_FRAME_PIECE_OVERLAY:
- rect.x = 0;
- rect.y = 0;
- rect.width = fgeom->width;
- rect.height = fgeom->height;
+ rect = visible_rect;
break;
case META_FRAME_PIECE_LAST:
diff --git a/src/ui/theme.h b/src/ui/theme.h
index 53b681a..a90f016 100644
--- a/src/ui/theme.h
+++ b/src/ui/theme.h
@@ -225,10 +225,7 @@ struct _MetaButtonSpace
*/
struct _MetaFrameGeometry
{
- int left_width;
- int right_width;
- int top_height;
- int bottom_height;
+ MetaFrameBorders borders;
int width;
int height;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]