diff options
author | Rob Adams <readams@readams.net> | 2003-09-20 04:58:25 +0000 |
---|---|---|
committer | Rob Adams <readams@src.gnome.org> | 2003-09-20 04:58:25 +0000 |
commit | de44b2d7949e63f8cef9f749c24e0f7bcef3ff89 (patch) | |
tree | 086815453a9085dc32ff1bfd1fe944e804855db9 /src/workspace.c | |
parent | 1117d45f8aab0593e65a4af54de6f41f3e32fac2 (diff) | |
download | metacity-de44b2d7949e63f8cef9f749c24e0f7bcef3ff89.tar.gz |
Fix a bug with partial-width panel struts caused by incorrect computation
2003-09-19 Rob Adams <readams@readams.net>
Fix a bug with partial-width panel struts caused by incorrect
computation of rectangle widths, and another when using different
screen resolutions on xineramas. See #122404. Also fix a crash
bug with the MRU list when sticking and unsticking windows. See
#120809.
* src/constraints.c (get_outermost_onscreen_positions): Fix
off-by-one error with partial-width struts.
* src/window.c (meta_window_update_struts): Fix off-by-one error
with partial-width struts.
(meta_window_stick): assign back to GList after g_list_append
(meta_window_unstick): assign back to GList after g_list_append
* src/workspace.c (ensure_work_areas_validated): For right and
bottom struts, compute strut relative to root window and not to
xinerama edge in compliance with EWMH recommendations.
Diffstat (limited to 'src/workspace.c')
-rw-r--r-- | src/workspace.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/workspace.c b/src/workspace.c index dc73879f..c16c2c11 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -453,14 +453,17 @@ ensure_work_areas_validated (MetaWorkspace *workspace) if ((i == 0) && (w->struts->right.width > 0)) { workspace->right_struts = g_slist_prepend (workspace->right_struts, - &w->struts->right); + &w->struts->right); } if (meta_screen_rect_intersects_xinerama (w->screen, &w->struts->right, i)) { - right_strut = MAX (right_strut, w->struts->right.width); + right_strut = MAX (right_strut, w->struts->right.width - + workspace->screen->width + + workspace->screen->xinerama_infos[i].width + + workspace->screen->xinerama_infos[i].x_origin); all_right_strut = MAX (all_right_strut, w->struts->right.width); } @@ -490,7 +493,10 @@ ensure_work_areas_validated (MetaWorkspace *workspace) &w->struts->bottom, i)) { - bottom_strut = MAX (bottom_strut, w->struts->bottom.height); + bottom_strut = MAX (bottom_strut, w->struts->bottom.height - + workspace->screen->height + + workspace->screen->xinerama_infos[i].height + + workspace->screen->xinerama_infos[i].y_origin); all_bottom_strut = MAX (all_bottom_strut, w->struts->bottom.height); } } |