File diff r8924:b5c89d2d57c4 → r8925:2b882cd5b1b6
src/window.cpp
Show inline comments
 
@@ -25,14 +25,12 @@
 
static Point _drag_delta; ///< delta between mouse cursor and upper left corner of dragged window
 
static Window *_mouseover_last_w = NULL; ///< Window of the last MOUSEOVER event
 

	
 
static Window _windows[MAX_NUMBER_OF_WINDOWS];
 

	
 
/**
 
 * List of windows opened at the screen.
 
 * Uppermost window is at  _z_windows[_last_z_window - 1],
 
 * bottom window is at _z_windows[0]
 
 */
 
Window *_z_windows[lengthof(_windows)];
 
Window *_z_windows[MAX_NUMBER_OF_WINDOWS];
 
Window **_last_z_window; ///< always points to the next free space in the z-array
 

	
 
Point _cursorpos_drag_start;
 
@@ -433,6 +431,8 @@ void DeleteWindow(Window *w)
 
	if (wz == NULL) return;
 
	memmove(wz, wz + 1, (byte*)_last_z_window - (byte*)wz);
 
	_last_z_window--;
 

	
 
	delete w;
 
}
 

	
 
/**
 
@@ -655,28 +655,6 @@ void AssignWidgetToWindow(Window *w, con
 
	}
 
}
 

	
 
static Window *FindFreeWindow()
 
{
 
	Window *w;
 

	
 
	for (w = _windows; w < endof(_windows); w++) {
 
		Window* const *wz;
 
		bool window_in_use = false;
 

	
 
		FOR_ALL_WINDOWS(wz) {
 
			if (*wz == w) {
 
				window_in_use = true;
 
				break;
 
			}
 
		}
 

	
 
		if (!window_in_use) return w;
 
	}
 

	
 
	assert(_last_z_window == endof(_z_windows));
 
	return NULL;
 
}
 

	
 
/** Open a new window.
 
 * This function is called from AllocateWindow() or AllocateWindowDesc()
 
 * See descriptions for those functions for usage
 
@@ -697,17 +675,18 @@ static Window *FindFreeWindow()
 
static Window *LocalAllocateWindow(int x, int y, int min_width, int min_height, int def_width, int def_height,
 
				WindowProc *proc, WindowClass cls, const Widget *widget, int window_number, void *data)
 
{
 
	Window *w = FindFreeWindow();
 
	Window *w;
 

	
 
	/* We have run out of windows, close one and use that as the place for our new one */
 
	if (w == NULL) {
 
	if (_last_z_window == endof(_z_windows)) {
 
		w = FindDeletableWindow();
 
		if (w == NULL) w = ForceFindDeletableWindow();
 
		DeleteWindow(w);
 
	}
 

	
 
	w = new Window;
 

	
 
	/* Set up window properties */
 
	memset(w, 0, sizeof(*w));
 
	w->window_class = cls;
 
	w->flags4 = WF_WHITE_BORDER_MASK; // just opened windows have a white border
 
	w->caption_color = 0xFF;
 
@@ -1057,7 +1036,6 @@ void InitWindowSystem()
 
{
 
	IConsoleClose();
 

	
 
	memset(&_windows, 0, sizeof(_windows));
 
	_last_z_window = _z_windows;
 
	InitViewports();
 
	_no_scroll = 0;