Index: src/network/network_chat_gui.cpp
===================================================================
--- src/network/network_chat_gui.cpp (revision 27145)
+++ src/network/network_chat_gui.cpp (working copy)
@@ -21,6 +21,7 @@
#include "../querystring_gui.h"
#include "../town.h"
#include "../window_func.h"
+#include "../toolbar_gui.h"
#include "../core/geometry_func.hpp"
#include "network.h"
#include "network_client.h"
@@ -321,6 +322,11 @@
InvalidateWindowData(WC_NEWS_WINDOW, 0, 0);
}
+ virtual void FindWindowPlacementAndResize(int def_width, int def_height)
+ {
+ Window::FindWindowPlacementAndResize(_toolbar_width, def_height);
+ }
+
/**
* Find the next item of the list of things that can be auto-completed.
* @param item The current indexed item to return. This function can, and most
@@ -536,7 +542,7 @@
/** The description of the chat window. */
static WindowDesc _chat_window_desc(
- WDP_MANUAL, NULL, 640, 14, // x, y, width, height
+ WDP_MANUAL, NULL, 0, 0,
WC_SEND_NETWORK_MSG, WC_NONE,
0,
_nested_chat_window_widgets, lengthof(_nested_chat_window_widgets)
Index: src/toolbar_gui.cpp
===================================================================
--- src/toolbar_gui.cpp (revision 27145)
+++ src/toolbar_gui.cpp (working copy)
@@ -46,6 +46,7 @@
#include "game/game.hpp"
#include "goal_base.h"
#include "story_base.h"
+#include "toolbar_gui.h"
#include "widgets/toolbar_widget.h"
@@ -56,6 +57,9 @@
#include "safeguards.h"
+/** Width of the toolbar, shared by statusbar. */
+uint _toolbar_width = 0;
+
RailType _last_built_railtype;
RoadType _last_built_roadtype;
@@ -1350,7 +1354,7 @@
child_wid->current_x = child_wid->smallest_x;
}
}
- w->window_desc->default_width = nbuttons * this->smallest_x;
+ _toolbar_width = nbuttons * this->smallest_x;
}
void AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl)
@@ -1526,7 +1530,7 @@
assert(i < lengthof(this->panel_widths));
this->panel_widths[i++] = child_wid->current_x;
- w->window_desc->default_width += child_wid->current_x;
+ _toolbar_width += child_wid->current_x;
}
}
@@ -1666,6 +1670,11 @@
DoZoomInOutWindow(ZOOM_NONE, this);
}
+ virtual void FindWindowPlacementAndResize(int def_width, int def_height)
+ {
+ Window::FindWindowPlacementAndResize(_toolbar_width, def_height);
+ }
+
virtual void OnPaint()
{
/* If spectator, disable all construction buttons
@@ -1900,7 +1909,7 @@
};
static WindowDesc _toolb_normal_desc(
- WDP_MANUAL, NULL, 640, 22,
+ WDP_MANUAL, NULL, 0, 0,
WC_MAIN_TOOLBAR, WC_NONE,
WDF_NO_FOCUS,
_nested_toolbar_normal_widgets, lengthof(_nested_toolbar_normal_widgets),
@@ -2211,7 +2220,7 @@
};
static WindowDesc _toolb_scen_desc(
- WDP_MANUAL, NULL, 640, 22,
+ WDP_MANUAL, NULL, 0, 0,
WC_MAIN_TOOLBAR, WC_NONE,
WDF_NO_FOCUS,
_nested_toolb_scen_widgets, lengthof(_nested_toolb_scen_widgets),
Index: src/statusbar_gui.cpp
===================================================================
--- src/statusbar_gui.cpp (revision 27145)
+++ src/statusbar_gui.cpp (working copy)
@@ -24,6 +24,7 @@
#include "saveload/saveload.h"
#include "window_func.h"
#include "statusbar_gui.h"
+#include "toolbar_gui.h"
#include "core/geometry_func.hpp"
#include "widgets/statusbar_widget.h"
@@ -101,6 +102,11 @@
return pt;
}
+ virtual void FindWindowPlacementAndResize(int def_width, int def_height)
+ {
+ Window::FindWindowPlacementAndResize(_toolbar_width, def_height);
+ }
+
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{
Dimension d;
@@ -238,7 +244,7 @@
};
static WindowDesc _main_status_desc(
- WDP_MANUAL, NULL, 640, 12,
+ WDP_MANUAL, NULL, 0, 0,
WC_STATUS_BAR, WC_NONE,
WDF_NO_FOCUS,
_nested_main_status_widgets, lengthof(_nested_main_status_widgets)
Index: src/toolbar_gui.h
===================================================================
--- src/toolbar_gui.h (revision 27145)
+++ src/toolbar_gui.h (working copy)
@@ -16,4 +16,6 @@
void ToggleBoundingBoxes();
void ToggleDirtyBlocks();
+extern uint _toolbar_width;
+
#endif /* TOOLBAR_GUI_H */
Index: src/window.cpp
===================================================================
--- src/window.cpp (revision 27145)
+++ src/window.cpp (working copy)
@@ -3388,7 +3388,7 @@
continue;
case WC_MAIN_TOOLBAR:
- ResizeWindow(w, min(neww, w->window_desc->default_width) - w->width, 0, false);
+ ResizeWindow(w, min(neww, _toolbar_width) - w->width, 0, false);
top = w->top;
left = PositionMainToolbar(w); // changes toolbar orientation
@@ -3400,14 +3400,15 @@
break;
case WC_STATUS_BAR:
- ResizeWindow(w, min(neww, w->window_desc->default_width) - w->width, 0, false);
+ ResizeWindow(w, min(neww, _toolbar_width) - w->width, 0, false);
top = newh - w->height;
left = PositionStatusbar(w);
break;
case WC_SEND_NETWORK_MSG:
- ResizeWindow(w, Clamp(neww, 320, 640) - w->width, 0, false);
+ ResizeWindow(w, min(neww, _toolbar_width) - w->width, 0, false);
+
top = newh - w->height - FindWindowById(WC_STATUS_BAR, 0)->height;
left = PositionNetworkChatWindow(w);
break;
Index: src/window_gui.h
===================================================================
--- src/window_gui.h (revision 27145)
+++ src/window_gui.h (working copy)
@@ -271,7 +271,7 @@
protected:
void InitializeData(WindowNumber window_number);
void InitializePositionSize(int x, int y, int min_width, int min_height);
- void FindWindowPlacementAndResize(int def_width, int def_height);
+ virtual void FindWindowPlacementAndResize(int def_width, int def_height);
SmallVector<int, 4> scheduled_invalidation_data; ///< Data of scheduled OnInvalidateData() calls.