(svn r7356) -Codechange: replace 'for (i = 0, wi = w->widget; wi->type != WWT_LAST; i++, wi++)' type for loops with 'for (i = 0; i < w->window_count; i++) { wi = &w->widget[i];'-type for loops for better readability.
authorrubidium
Mon, 04 Dec 2006 13:57:04 +0000
changeset 5236 e959e132a78e
parent 5235 3c309f43f0a6
child 5237 c14c97d7030a
(svn r7356) -Codechange: replace 'for (i = 0, wi = w->widget; wi->type != WWT_LAST; i++, wi++)' type for loops with 'for (i = 0; i < w->window_count; i++) { wi = &w->widget[i];'-type for loops for better readability.
-Codechange: use IsWindowWidget(Disabled|Hidden) in favor of IsWidget(Disabled|Hidden).
widget.c
window.c
window.h
--- a/widget.c	Mon Dec 04 13:46:03 2006 +0000
+++ b/widget.c	Mon Dec 04 13:57:04 2006 +0000
@@ -132,16 +132,17 @@
  */
 int GetWidgetFromPos(const Window *w, int x, int y)
 {
-	const Widget *wi;
-	int index, found_index = -1;
+	uint index;
+	int found_index = -1;
 
 	// Go through the widgets and check if we find the widget that the coordinate is
 	// inside.
-	for (index = 0,wi = w->widget; wi->type != WWT_LAST; index++, wi++) {
+	for (index = 0; index < w->widget_count; index++) {
+		const Widget *wi = &w->widget[index];
 		if (wi->type == WWT_EMPTY || wi->type == WWT_FRAME) continue;
 
 		if (x >= wi->left && x <= wi->right && y >= wi->top &&  y <= wi->bottom &&
-				!IsWidgetHidden(wi)) {
+				!IsWindowWidgetHidden(w, index)) {
 			found_index = index;
 		}
 	}
@@ -184,21 +185,19 @@
 
 void DrawWindowWidgets(const Window *w)
 {
-	const Widget *wi;
 	const DrawPixelInfo* dpi = _cur_dpi;
 	Rect r;
-	int i = 0;
+	uint i;
 
-	wi = w->widget;
-
-	do {
-		bool clicked = IsWindowWidgetLowered((Window*)w, i);
+	for (i = 0; i < w->widget_count; i++) {
+		const Widget *wi = &w->widget[i];
+		bool clicked = IsWindowWidgetLowered(w, i);
 
 		if (dpi->left > (r.right=/*w->left + */wi->right) ||
 				dpi->left + dpi->width <= (r.left=wi->left/* + w->left*/) ||
 				dpi->top > (r.bottom=/*w->top +*/ wi->bottom) ||
 				dpi->top + dpi->height <= (r.top = /*w->top +*/ wi->top) ||
-				IsWidgetHidden(wi)) {
+				IsWindowWidgetHidden(w, i)) {
 			continue;
 		}
 
@@ -457,12 +456,12 @@
 
 			DrawStringCenteredTruncated(r.left + 2, r.right - 2, r.top+2, wi->data, 0x84);
 draw_default:;
-			if (IsWidgetDisabled(wi)) {
+			if (IsWindowWidgetDisabled(w, i)) {
 				GfxFillRect(r.left+1, r.top+1, r.right-1, r.bottom-1, _colour_gradient[wi->color&0xF][2] | PALETTE_MODIFIER_GREYOUT);
 			}
 		}
 		}
-	} while (i++, (++wi)->type != WWT_LAST);
+	}
 
 
 	if (w->flags4 & WF_WHITE_BORDER_MASK) {
--- a/window.c	Mon Dec 04 13:46:03 2006 +0000
+++ b/window.c	Mon Dec 04 13:57:04 2006 +0000
@@ -100,10 +100,10 @@
 		e.we.click.widget = GetWidgetFromPos(w, x, y);
 		if (e.we.click.widget < 0) return; /* exit if clicked outside of widgets */
 
-		wi = &w->widget[e.we.click.widget];
+		/* don't allow any interaction if the button has been disabled */
+		if (IsWindowWidgetDisabled(w, e.we.click.widget)) return;
 
-		/* don't allow any interaction if the button has been disabled */
-		if (IsWidgetDisabled(wi)) return;
+		wi = &w->widget[e.we.click.widget];
 
 		if (wi->type & WWB_MASK) {
 			/* special widget handling for buttons*/
@@ -1741,7 +1741,7 @@
 	const Widget *wi = &w->widget[widget_index];
 
 	/* Don't redraw the window if the widget is invisible or of no-type */
-	if (wi->type == WWT_EMPTY || IsWidgetHidden(wi)) return;
+	if (wi->type == WWT_EMPTY || IsWindowWidgetHidden(w, widget_index)) return;
 
 	SetDirtyBlocks(w->left + wi->left, w->top + wi->top, w->left + wi->right + 1, w->top + wi->bottom + 1);
 }
--- a/window.h	Mon Dec 04 13:46:03 2006 +0000
+++ b/window.h	Mon Dec 04 13:57:04 2006 +0000
@@ -667,17 +667,6 @@
 
 /**
  * Gets the enabled/disabled status of a widget.
- * This is the same as IsWindowWidgetDisabled, only working on direct widget, instead of an index
- * @param wi : Widget to get the status from
- * @return status of the widget ie: disabled = true, enabled = false
- */
-static inline bool IsWidgetDisabled(const Widget *wi)
-{
-	return HASBIT(wi->display_flags, WIDG_DISABLED);
-}
-
-/**
- * Gets the enabled/disabled status of a widget.
  * @param w : Window on which the widget is located
  * @param widget_index : index of this widget in the window
  * @return status of the widget ie: disabled = true, enabled = false
@@ -685,7 +674,7 @@
 static inline bool IsWindowWidgetDisabled(const Window *w, byte widget_index)
 {
 	assert(widget_index < w->widget_count);
-	return IsWidgetDisabled(&w->widget[widget_index]);
+	return HASBIT(w->widget[widget_index].display_flags, WIDG_DISABLED);
 }
 
 /**
@@ -724,17 +713,6 @@
 
 /**
  * Gets the visibility of a widget.
- * Works directly on a widget, instead of an index
- * @param wi Widget to get the status from
- * @return status of the widget ie. hidden = true, visible = false
- */
-static inline bool IsWidgetHidden(const Widget *wi)
-{
-	return HASBIT(wi->display_flags, WIDG_HIDDEN);
-}
-
-/**
- * Gets the visibility of a widget.
  * @param w : Window on which the widget is located
  * @param widget_index : index of this widget in the window
  * @return status of the widget ie: hidden = true, visible = false
@@ -742,7 +720,7 @@
 static inline bool IsWindowWidgetHidden(const Window *w, byte widget_index)
 {
 	assert(widget_index < w->widget_count);
-	return IsWidgetHidden(&w->widget[widget_index]);
+	return HASBIT(w->widget[widget_index].display_flags, WIDG_HIDDEN);
 }
 
 /**