diff --git a/ChangeLog b/ChangeLog index 601a4262d..4718eb78b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,15 @@ 2005-05-26 Elijah Newren - * src/window.c: (meta_window_new_with_attrs): put all transients + * src/window.c (check_maximize_to_work_area): don't accidentally + treat maximize vertically as maximize in both directions. Fixes + #302204. + +2005-05-26 Elijah Newren + + * src/window.c (meta_window_new_with_attrs): put all transients of the new window, if any exist, in the calc_showing queue. Fixes - #303284. + #303284. Thanks to Billy Biggs for the testcase that made this + easy to track down. 2005-04-11 Elijah Newren diff --git a/src/window.c b/src/window.c index d605b4fc2..31930431d 100644 --- a/src/window.c +++ b/src/window.c @@ -2998,8 +2998,17 @@ check_maximize_to_work_area (MetaWindow *window, meta_window_get_outer_rect (window, &rect); - if ( rect.x >= work_area->x && - rect.y >= work_area->y && + /* The logic in this if is basically: + * if window's left side is at far left or offscreen AND + * window's bottom side is far top or offscreen AND + * window's right side is at far right or offscreen AND + * window's bottom side is at far bottom or offscreen + * except that we maximize windows with a size increment hint (e.g. + * terminals) should be maximized if they are "sufficiently close" + * to the above criteria... + */ + if ( rect.x <= work_area->x && + rect.y <= work_area->y && (((work_area->width + work_area->x) - (rect.width + rect.x)) < window->size_hints.width_inc) && (((work_area->height + work_area->y) - (rect.height + rect.y)) <