diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 4cdef5470..9145ee612 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -2829,8 +2829,14 @@ e_border_maximize(E_Border *bd, /* Add new maximization. It must be added, so that VERTICAL + HORIZONTAL == BOTH */ bd->maximized |= max; - e_hints_window_maximized_set(bd, bd->maximized & E_MAXIMIZE_HORIZONTAL, - bd->maximized & E_MAXIMIZE_VERTICAL); + if ((bd->maximized & E_MAXIMIZE_DIRECTION) > E_MAXIMIZE_BOTH) + /* left/right maximize */ + e_hints_window_maximized_set(bd, 0, + ((bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_LEFT) || + ((bd->maximized & E_MAXIMIZE_DIRECTION) == E_MAXIMIZE_RIGHT)); + else + e_hints_window_maximized_set(bd, bd->maximized & E_MAXIMIZE_HORIZONTAL, + bd->maximized & E_MAXIMIZE_VERTICAL); e_remember_update(bd); } diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c index 975e24c26..d4008004a 100644 --- a/src/bin/e_hints.c +++ b/src/bin/e_hints.c @@ -515,7 +515,23 @@ e_hints_window_init(E_Border *bd) if (!bd->lock_client_maximize) { e_hints_window_size_get(bd); - e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_VERTICAL); + do + { + if (bd->client.initial_attributes.w == (bd->zone->w / 2)) + { + if (!bd->client.initial_attributes.x) + { + e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_LEFT); + break; + } + else if (bd->client.initial_attributes.x == bd->zone->w / 2) + { + e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_RIGHT); + break; + } + } + e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_VERTICAL); + } while (0); } else e_hints_window_maximized_set(bd, 0, 0);