Changeset - r5232:602f924ee420
[Not reviewed]
master
0 2 0
rubidium - 18 years ago 2006-12-04 13:36:27
rubidium@openttd.org
(svn r7352) -Codechange: add widget_count parameter to the window.
-Codechange: check whether widget indices are valid for all the (Set|Is)WindowWidget(Disabled|Lowered|Hidden) and related functions.
2 files changed with 12 insertions and 0 deletions:
0 comments (0 inline, 0 general)
window.c
Show inline comments
 
@@ -316,6 +316,7 @@ void DeleteWindow(Window *w)
 
	SetWindowDirty(w);
 
	free(w->widget);
 
	w->widget = NULL;
 
	w->widget_count = 0;
 

	
 
	/* Find the window in the z-array, and effectively remove it
 
	 * by moving all windows after it one to the left */
 
@@ -519,8 +520,10 @@ void AssignWidgetToWindow(Window *w, con
 

	
 
		w->widget = realloc(w->widget, sizeof(*w->widget) * index);
 
		memcpy(w->widget, widget, sizeof(*w->widget) * index);
 
		w->widget_count = index - 1;
 
	} else {
 
		w->widget = NULL;
 
		w->widget_count = 0;
 
	}
 
}
 

	
 
@@ -877,6 +880,7 @@ void UnInitWindowSystem(void)
 
	FOR_ALL_WINDOWS(wz) {
 
		free((*wz)->widget);
 
		(*wz)->widget = NULL;
 
		(*wz)->widget_count = 0;
 
	}
 
}
 

	
window.h
Show inline comments
 
@@ -331,6 +331,7 @@ struct Window {
 
	ViewPort *viewport;
 
	const Widget *original_widget;
 
	Widget *widget;
 
	uint widget_count;
 
	uint32 desc_flags;
 

	
 
	WindowMessage message;
 
@@ -640,6 +641,7 @@ void DrawWindowViewport(const Window *w)
 
 */
 
static inline void SetWindowWidgetDisabledState(Window *w, byte widget_index, bool disab_stat)
 
{
 
	assert(widget_index < w->widget_count);
 
	SB(w->widget[widget_index].display_flags, WIDG_DISABLED, 1, !!disab_stat);
 
}
 

	
 
@@ -682,6 +684,7 @@ static inline bool IsWidgetDisabled(cons
 
 */
 
static inline bool IsWindowWidgetDisabled(Window *w, byte widget_index)
 
{
 
	assert(widget_index < w->widget_count);
 
	return IsWidgetDisabled(&w->widget[widget_index]);
 
}
 

	
 
@@ -695,6 +698,7 @@ static inline bool IsWindowWidgetDisable
 
 */
 
static inline void SetWindowWidgetHiddenState(Window *w, byte widget_index, bool hidden_stat)
 
{
 
	assert(widget_index < w->widget_count);
 
	SB(w->widget[widget_index].display_flags, WIDG_HIDDEN, 1, !!hidden_stat);
 
}
 

	
 
@@ -737,6 +741,7 @@ static inline bool IsWidgetHidden(const 
 
 */
 
static inline bool IsWindowWidgetHidden(Window *w, byte widget_index)
 
{
 
	assert(widget_index < w->widget_count);
 
	return IsWidgetHidden(&w->widget[widget_index]);
 
}
 

	
 
@@ -748,6 +753,7 @@ static inline bool IsWindowWidgetHidden(
 
 */
 
static inline void SetWindowWidgetLoweredState(Window *w, byte widget_index, bool lowered_stat)
 
{
 
	assert(widget_index < w->widget_count);
 
	SB(w->widget[widget_index].display_flags, WIDG_LOWERED, 1, !!lowered_stat);
 
}
 

	
 
@@ -758,6 +764,7 @@ static inline void SetWindowWidgetLowere
 
 */
 
static inline void ToggleWidgetLoweredState(Window *w, byte widget_index)
 
{
 
	assert(widget_index < w->widget_count);
 
	TOGGLEBIT(w->widget[widget_index].display_flags, WIDG_LOWERED);
 
}
 

	
 
@@ -789,6 +796,7 @@ static inline void RaiseWindowWidget(Win
 
 */
 
static inline bool IsWindowWidgetLowered(Window *w, byte widget_index)
 
{
 
	assert(widget_index < w->widget_count);
 
	return HASBIT(w->widget[widget_index].display_flags, WIDG_LOWERED);
 
}
 

	
0 comments (0 inline, 0 general)