#ifndef _WX_WINDOW_H_
#define _WX_WINDOW_H_
-// ---------------------------------------------------------------------------
-// headers
-// ---------------------------------------------------------------------------
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma interface "window.h"
-#endif
-
-// [at least] some version of Windows send extra mouse move messages after
-// a mouse click or a key press - to temporarily fix this problem, set the
-// define below to 1
-//
-// a better solution should be found later...
-#define wxUSE_MOUSEEVENT_HACK 0
-
// ---------------------------------------------------------------------------
// constants
// ---------------------------------------------------------------------------
void AssociateHandle(WXWidget handle);
void DissociateHandle();
+ // does this window have deferred position and/or size?
+ bool IsSizeDeferred() const;
+
// implementation from now on
// ==========================
int m_xThumbSize;
int m_yThumbSize;
-#if wxUSE_MOUSEEVENT_HACK
- // the coordinates of the last mouse event and the type of it
- long m_lastMouseX,
- m_lastMouseY;
- int m_lastMouseEvent;
-#endif // wxUSE_MOUSEEVENT_HACK
-
// implement the base class pure virtuals
virtual void DoClientToScreen( int *x, int *y ) const;
virtual void DoScreenToClient( int *x, int *y ) const;
// this simply moves/resizes the given HWND which is supposed to be our
// sibling (this is useful for controls which are composite at MSW level
// and for which DoMoveWindow() is not enough)
- void DoMoveSibling(WXHWND hwnd, int x, int y, int width, int height);
+ //
+ // returns true if the window move was deferred, false if it was moved
+ // immediately (no error return)
+ bool DoMoveSibling(WXHWND hwnd, int x, int y, int width, int height);
// move the window to the specified location and resize it: this is called
// from both DoSetSize() and DoSetClientSize() and would usually just call
// the background, false otherwise (i.e. the system should erase it)
bool DoEraseBackground(WXHDC hDC);
+ // generate WM_CHANGEUISTATE if it's needed for the OS we're running under
+ //
+ // action should be one of the UIS_XXX constants
+ // state should be one or more of the UISF_XXX constants
+ // if action == UIS_INITIALIZE then it doesn't seem to matter what we use
+ // for state as the system will decide for us what needs to be set
+ void MSWUpdateUIState(int action, int state = 0);
+
private:
// common part of all ctors
void Init();