Changeset - r11523:426bfd07f0d5
[Not reviewed]
master
0 2 0
alberth - 15 years ago 2009-03-29 13:25:01
alberth@openttd.org
(svn r15889) -Codechange: Add pre/inter/post space to nested background widgets
2 files changed with 42 insertions and 6 deletions:
0 comments (0 inline, 0 general)
src/widget.cpp
Show inline comments
 
@@ -862,6 +862,22 @@ void NWidgetContainer::Add(NWidgetBase *
 
	}
 
}
 

	
 
/**
 
 * Set additional pre/inter/post space for the container.
 
 *
 
 * @param pip_pre   Additional space in front of the first child widget (above
 
 *                  for the vertical container, at the left for the horizontal container).
 
 * @param pip_inter Additional space between two child widgets.
 
 * @param pip_post  Additional space after the last child widget (below for the
 
 *                  vertical container, at the right for the horizontal container).
 
 */
 
void NWidgetContainer::SetPIP(uint8 pip_pre, uint8 pip_inter, uint8 pip_post)
 
{
 
	this->pip_pre = pip_pre;
 
	this->pip_inter = pip_inter;
 
	this->pip_post = pip_post;
 
}
 

	
 
NWidgetHorizontal::NWidgetHorizontal() : NWidgetContainer(NWID_HORIZONTAL)
 
{
 
}
 
@@ -1145,6 +1161,24 @@ void NWidgetBackground::Add(NWidgetBase 
 
	this->child->Add(nwid);
 
}
 

	
 
/**
 
 * Set additional pre/inter/post space for the background widget.
 
 *
 
 * @param pip_pre   Additional space in front of the first child widget (above
 
 *                  for the vertical container, at the left for the horizontal container).
 
 * @param pip_inter Additional space between two child widgets.
 
 * @param pip_post  Additional space after the last child widget (below for the
 
 *                  vertical container, at the right for the horizontal container).
 
 * @note Using this function implies that the widget has (or will have) child widgets.
 
 */
 
void NWidgetBackground::SetPIP(uint8 pip_pre, uint8 pip_inter, uint8 pip_post)
 
{
 
	if (this->child == NULL) {
 
		this->child = new NWidgetVertical();
 
	}
 
	this->child->SetPIP(pip_pre, pip_inter, pip_post);
 
}
 

	
 
int NWidgetBackground::ComputeMinimalSize()
 
{
 
	int biggest_index = this->index;
 
@@ -1476,11 +1510,10 @@ static int MakeNWidget(const NWidgetPart
 

	
 
			case WPT_PIPSPACE: {
 
				NWidgetContainer *nwc = dynamic_cast<NWidgetContainer *>(*dest);
 
				if (nwc != NULL) {
 
					nwc->pip_pre = parts->u.pip.pre;
 
					nwc->pip_inter = parts->u.pip.inter;
 
					nwc->pip_post = parts->u.pip.post;
 
				}
 
				if (nwc != NULL) nwc->SetPIP(parts->u.pip.pre,  parts->u.pip.inter, parts->u.pip.post);
 

	
 
				NWidgetBackground *nwb = dynamic_cast<NWidgetBackground *>(*dest);
 
				if (nwb != NULL) nwb->SetPIP(parts->u.pip.pre,  parts->u.pip.inter, parts->u.pip.post);
 
				break;
 
			}
 

	
src/widget_type.h
Show inline comments
 
@@ -209,11 +209,13 @@ public:
 
	~NWidgetContainer();
 

	
 
	void Add(NWidgetBase *wid);
 
	void SetPIP(uint8 pip_pre, uint8 pip_inter, uint8 pip_post);
 

	
 
protected:
 
	uint8 pip_pre;     ///< Amount of space before first widget.
 
	uint8 pip_inter;   ///< Amount of space between widgets.
 
	uint8 pip_post;    ///< Amount of space after last widget.
 
protected:
 

	
 
	NWidgetBase *head; ///< Pointer to first widget in container.
 
	NWidgetBase *tail; ///< Pointer to last widget in container.
 
};
 
@@ -267,6 +269,7 @@ public:
 
	~NWidgetBackground();
 

	
 
	void Add(NWidgetBase *nwid);
 
	void SetPIP(uint8 pip_pre, uint8 pip_inter, uint8 pip_post);
 

	
 
	int ComputeMinimalSize();
 
	void AssignMinimalPosition(uint x, uint y, uint given_width, uint given_height, bool allow_resize_x, bool allow_resize_y, bool rtl);
0 comments (0 inline, 0 general)