diff --git a/src/window.cpp b/src/window.cpp index 602759189e..ba3d7f0eb7 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -548,8 +548,7 @@ void Window::ReInit(int rx, int ry) if (this->resize.step_height > 1) dy -= dy % (int)this->resize.step_height; ResizeWindow(this, dx, dy); - this->OnResize(); - this->SetDirty(); + /* ResizeWindow() does this->SetDirty() already, no need to do it again here. */ } /** Set the shaded state of the window to \a make_shaded. @@ -962,11 +961,12 @@ void Window::FindWindowPlacementAndResize(int def_width, int def_height) if (this->resize.step_height > 1) enlarge_y -= enlarge_y % (int)this->resize.step_height; ResizeWindow(this, enlarge_x, enlarge_y); + /* ResizeWindow() calls this->OnResize(). */ + } else { + /* Always call OnResize; that way the scrollbars and matrices get initialized. */ + this->OnResize(); } - /* Always call OnResize; that way the scrollbars and matrices get initialized */ - this->OnResize(); - int nx = this->left; int ny = this->top; @@ -1425,6 +1425,7 @@ void ResizeWindow(Window *w, int delta_x, int delta_y) w->nested_root->AssignSizePosition(ST_RESIZE, 0, 0, w->nested_root->smallest_x + new_xinc, w->nested_root->smallest_y + new_yinc, _dynlang.text_dir == TD_RTL); w->width = w->nested_root->current_x; w->height = w->nested_root->current_y; + w->OnResize(); w->SetDirty(); } @@ -1679,7 +1680,6 @@ static bool HandleWindowDragging() /* ResizeWindow sets both pre- and after-size to dirty for redrawal */ ResizeWindow(w, x, y); - w->OnResize(); return false; } } @@ -2548,10 +2548,7 @@ void RelocateAllWindows(int neww, int newh) * in a 'backup'-desc that the window should always be centred. */ switch (w->window_class) { case WC_MAIN_TOOLBAR: - if (neww - w->width != 0) { - ResizeWindow(w, min(neww, 640) - w->width, 0); - w->OnResize(); - } + if (neww - w->width != 0) ResizeWindow(w, min(neww, 640) - w->width, 0); top = w->top; left = PositionMainToolbar(w); // changes toolbar orientation