Changeset - r20285:68e5b14aeae7
[Not reviewed]
master
0 3 0
frosch - 11 years ago 2013-05-26 19:27:44
frosch@openttd.org
(svn r25292) -Feature: Save stickyness of windows when Ctrl+Clicking the sticky button.
3 files changed with 25 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/table/window_settings.ini
Show inline comments
 
@@ -32,6 +32,10 @@ cat      = SC_ADVANCED
 

	
 

	
 

	
 
[SDT_BOOL]
 
var      = pref_sticky
 
def      = false
 

	
 
[SDT_END]
 

	
 
};
src/window.cpp
Show inline comments
 
@@ -95,7 +95,8 @@ WindowDesc::WindowDesc(WindowPosition de
 
	ini_key(ini_key),
 
	flags(flags),
 
	nwid_parts(nwid_parts),
 
	nwid_length(nwid_length)
 
	nwid_length(nwid_length),
 
	pref_sticky(false)
 
{
 
	if (_window_descs == NULL) _window_descs = new SmallVector<WindowDesc*, 16>();
 
	*_window_descs->Append() = this;
 
@@ -147,6 +148,19 @@ void WindowDesc::SaveToConfig()
 
}
 

	
 
/**
 
 * Read default values from WindowDesc configuration an apply them to the window.
 
 */
 
void Window::ApplyDefaults()
 
{
 
	if (this->nested_root != NULL && this->nested_root->GetWidgetOfType(WWT_STICKYBOX) != NULL) {
 
		if (this->window_desc->pref_sticky) this->flags |= WF_STICKY;
 
	} else {
 
		/* There is no stickybox; clear the preference in case someone tried to be funny */
 
		this->window_desc->pref_sticky = false;
 
	}
 
}
 

	
 
/**
 
 * Compute the row of a widget that a user clicked in.
 
 * @param clickpos    Vertical position of the mouse click.
 
 * @param widget      Widget number of the widget clicked in.
 
@@ -551,6 +565,7 @@ static void DispatchLeftClickEvent(Windo
 
		case WWT_STICKYBOX:
 
			w->flags ^= WF_STICKY;
 
			nw->SetDirty(w);
 
			if (_ctrl_pressed) w->window_desc->pref_sticky = w->flags & WF_STICKY;
 
			return;
 

	
 
		default:
 
@@ -1574,6 +1589,7 @@ void Window::CreateNestedTree(bool fill_
 
void Window::FinishInitNested(WindowNumber window_number)
 
{
 
	this->InitializeData(window_number);
 
	this->ApplyDefaults();
 
	Point pt = this->OnInitialPosition(this->nested_root->smallest_x, this->nested_root->smallest_y, window_number);
 
	this->InitializePositionSize(pt.x, pt.y, this->nested_root->smallest_x, this->nested_root->smallest_y);
 
	this->FindWindowPlacementAndResize(this->window_desc->default_width, this->window_desc->default_height);
src/window_gui.h
Show inline comments
 
@@ -181,6 +181,8 @@ struct WindowDesc : ZeroedMemoryAllocato
 
	const NWidgetPart *nwid_parts; ///< Nested widget parts describing the window.
 
	int16 nwid_length;             ///< Length of the #nwid_parts array.
 

	
 
	bool pref_sticky;              ///< Preferred stickyness.
 

	
 
	static void LoadFromConfig();
 
	static void SaveToConfig();
 
};
 
@@ -508,6 +510,8 @@ public:
 
	 */
 
	virtual void OnInit() { }
 

	
 
	virtual void ApplyDefaults();
 

	
 
	/**
 
	 * Compute the initial position of the window.
 
	 * @param sm_width      Smallest width of the window.
0 comments (0 inline, 0 general)