mirror of https://github.com/OpenTTD/OpenTTD
(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).release/0.5
parent
756d6a6efb
commit
9a87e1e0ea
25
widget.c
25
widget.c
|
@ -132,16 +132,17 @@ void ScrollbarClickHandler(Window *w, const Widget *wi, int x, int y)
|
||||||
*/
|
*/
|
||||||
int GetWidgetFromPos(const Window *w, int x, int y)
|
int GetWidgetFromPos(const Window *w, int x, int y)
|
||||||
{
|
{
|
||||||
const Widget *wi;
|
uint index;
|
||||||
int index, found_index = -1;
|
int found_index = -1;
|
||||||
|
|
||||||
// Go through the widgets and check if we find the widget that the coordinate is
|
// Go through the widgets and check if we find the widget that the coordinate is
|
||||||
// inside.
|
// 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 (wi->type == WWT_EMPTY || wi->type == WWT_FRAME) continue;
|
||||||
|
|
||||||
if (x >= wi->left && x <= wi->right && y >= wi->top && y <= wi->bottom &&
|
if (x >= wi->left && x <= wi->right && y >= wi->top && y <= wi->bottom &&
|
||||||
!IsWidgetHidden(wi)) {
|
!IsWindowWidgetHidden(w, index)) {
|
||||||
found_index = index;
|
found_index = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -184,21 +185,19 @@ void DrawFrameRect(int left, int top, int right, int bottom, int ctab, FrameFlag
|
||||||
|
|
||||||
void DrawWindowWidgets(const Window *w)
|
void DrawWindowWidgets(const Window *w)
|
||||||
{
|
{
|
||||||
const Widget *wi;
|
|
||||||
const DrawPixelInfo* dpi = _cur_dpi;
|
const DrawPixelInfo* dpi = _cur_dpi;
|
||||||
Rect r;
|
Rect r;
|
||||||
int i = 0;
|
uint i;
|
||||||
|
|
||||||
wi = w->widget;
|
for (i = 0; i < w->widget_count; i++) {
|
||||||
|
const Widget *wi = &w->widget[i];
|
||||||
do {
|
bool clicked = IsWindowWidgetLowered(w, i);
|
||||||
bool clicked = IsWindowWidgetLowered((Window*)w, i);
|
|
||||||
|
|
||||||
if (dpi->left > (r.right=/*w->left + */wi->right) ||
|
if (dpi->left > (r.right=/*w->left + */wi->right) ||
|
||||||
dpi->left + dpi->width <= (r.left=wi->left/* + w->left*/) ||
|
dpi->left + dpi->width <= (r.left=wi->left/* + w->left*/) ||
|
||||||
dpi->top > (r.bottom=/*w->top +*/ wi->bottom) ||
|
dpi->top > (r.bottom=/*w->top +*/ wi->bottom) ||
|
||||||
dpi->top + dpi->height <= (r.top = /*w->top +*/ wi->top) ||
|
dpi->top + dpi->height <= (r.top = /*w->top +*/ wi->top) ||
|
||||||
IsWidgetHidden(wi)) {
|
IsWindowWidgetHidden(w, i)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,12 +456,12 @@ void DrawWindowWidgets(const Window *w)
|
||||||
|
|
||||||
DrawStringCenteredTruncated(r.left + 2, r.right - 2, r.top+2, wi->data, 0x84);
|
DrawStringCenteredTruncated(r.left + 2, r.right - 2, r.top+2, wi->data, 0x84);
|
||||||
draw_default:;
|
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);
|
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) {
|
if (w->flags4 & WF_WHITE_BORDER_MASK) {
|
||||||
|
|
8
window.c
8
window.c
|
@ -100,10 +100,10 @@ static void DispatchLeftClickEvent(Window *w, int x, int y)
|
||||||
e.we.click.widget = GetWidgetFromPos(w, x, y);
|
e.we.click.widget = GetWidgetFromPos(w, x, y);
|
||||||
if (e.we.click.widget < 0) return; /* exit if clicked outside of widgets */
|
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 */
|
/* don't allow any interaction if the button has been disabled */
|
||||||
if (IsWidgetDisabled(wi)) return;
|
if (IsWindowWidgetDisabled(w, e.we.click.widget)) return;
|
||||||
|
|
||||||
|
wi = &w->widget[e.we.click.widget];
|
||||||
|
|
||||||
if (wi->type & WWB_MASK) {
|
if (wi->type & WWB_MASK) {
|
||||||
/* special widget handling for buttons*/
|
/* special widget handling for buttons*/
|
||||||
|
@ -1741,7 +1741,7 @@ void InvalidateWidget(const Window *w, byte widget_index)
|
||||||
const Widget *wi = &w->widget[widget_index];
|
const Widget *wi = &w->widget[widget_index];
|
||||||
|
|
||||||
/* Don't redraw the window if the widget is invisible or of no-type */
|
/* 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);
|
SetDirtyBlocks(w->left + wi->left, w->top + wi->top, w->left + wi->right + 1, w->top + wi->bottom + 1);
|
||||||
}
|
}
|
||||||
|
|
26
window.h
26
window.h
|
@ -665,17 +665,6 @@ static inline void EnableWindowWidget(Window *w, byte widget_index)
|
||||||
SetWindowWidgetDisabledState(w, widget_index, false);
|
SetWindowWidgetDisabledState(w, widget_index, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.
|
* Gets the enabled/disabled status of a widget.
|
||||||
* @param w : Window on which the widget is located
|
* @param w : Window on which the widget is located
|
||||||
|
@ -685,7 +674,7 @@ static inline bool IsWidgetDisabled(const Widget *wi)
|
||||||
static inline bool IsWindowWidgetDisabled(const Window *w, byte widget_index)
|
static inline bool IsWindowWidgetDisabled(const Window *w, byte widget_index)
|
||||||
{
|
{
|
||||||
assert(widget_index < w->widget_count);
|
assert(widget_index < w->widget_count);
|
||||||
return IsWidgetDisabled(&w->widget[widget_index]);
|
return HASBIT(w->widget[widget_index].display_flags, WIDG_DISABLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -722,17 +711,6 @@ static inline void ShowWindowWidget(Window *w, byte widget_index)
|
||||||
SetWindowWidgetHiddenState(w, widget_index, false);
|
SetWindowWidgetHiddenState(w, widget_index, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.
|
* Gets the visibility of a widget.
|
||||||
* @param w : Window on which the widget is located
|
* @param w : Window on which the widget is located
|
||||||
|
@ -742,7 +720,7 @@ static inline bool IsWidgetHidden(const Widget *wi)
|
||||||
static inline bool IsWindowWidgetHidden(const Window *w, byte widget_index)
|
static inline bool IsWindowWidgetHidden(const Window *w, byte widget_index)
|
||||||
{
|
{
|
||||||
assert(widget_index < w->widget_count);
|
assert(widget_index < w->widget_count);
|
||||||
return IsWidgetHidden(&w->widget[widget_index]);
|
return HASBIT(w->widget[widget_index].display_flags, WIDG_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue