diff options
Diffstat (limited to 'src/ui/frames.c')
| -rw-r--r-- | src/ui/frames.c | 35 | 
1 files changed, 20 insertions, 15 deletions
diff --git a/src/ui/frames.c b/src/ui/frames.c index 5d76f42a..1adb3ccf 100644 --- a/src/ui/frames.c +++ b/src/ui/frames.c @@ -668,10 +668,9 @@ meta_frames_lookup_window (MetaFrames *frames,  }  void -meta_frames_get_geometry (MetaFrames *frames, -                          Window xwindow, -                          int *top_height, int *bottom_height, -                          int *left_width, int *right_width) +meta_frames_get_borders (MetaFrames       *frames, +                         Window            xwindow, +                         MetaFrameBorders *borders)  {    MetaFrameFlags flags;    MetaUIFrame *frame; @@ -702,14 +701,13 @@ meta_frames_get_geometry (MetaFrames *frames,                                  type,                                  frame->text_height,                                  flags, -                                top_height, bottom_height, -                                left_width, right_width); +                                borders);    /* Scale frame geometry to ensure proper frame position */ -  *top_height *= scale; -  *bottom_height *= scale; -  *left_width *= scale; -  *right_width *= scale; +  borders->visible.top *= scale; +  borders->visible.bottom *= scale; +  borders->visible.left *= scale; +  borders->visible.right *= scale;  }  #ifdef HAVE_SHAPE @@ -2060,6 +2058,7 @@ 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;    gint scale; @@ -2090,7 +2089,12 @@ populate_cache (MetaFrames *frames,                                  frame_type,                                  frame->text_height,                                  frame_flags, -                                &top, &bottom, &left, &right); +                                &borders); + +  top = borders.visible.top; +  left = borders.visible.left; +  right = borders.visible.right; +  bottom = borders.visible.bottom;    pixels = get_cache (frames, frame);    scale = gdk_window_get_scale_factor (frame->window); @@ -2195,6 +2199,7 @@ subtract_client_area (cairo_region_t *region, MetaUIFrame *frame)    GdkRectangle area;    MetaFrameFlags flags;    MetaFrameType type; +  MetaFrameBorders borders;    cairo_region_t *tmp_region;    Display *display;    gint scale; @@ -2210,13 +2215,13 @@ subtract_client_area (cairo_region_t *region, MetaUIFrame *frame)                   META_CORE_GET_END);    meta_theme_get_frame_borders (meta_theme_get_current (), -                         type, frame->text_height, flags, -                         &area.x, NULL, &area.y, NULL); +                                type, frame->text_height, flags, +                                &borders);    area.width /= scale;    area.height /= scale; -  area.x /= scale; -  area.y /= scale; +  area.x = borders.visible.left / scale; +  area.y = borders.visible.top / scale;    tmp_region = cairo_region_create_rectangle (&area);    cairo_region_subtract (region, tmp_region);  | 
