#ifndef _WX_DFB_TOPLEVEL_H_
#define _WX_DFB_TOPLEVEL_H_
-#include "wx/dfb/ifacehelpers.h"
+#include "wx/dfb/dfbptr.h"
wxDFB_DECLARE_INTERFACE(IDirectFBWindow);
void OnInternalIdle();
- IDirectFBWindowPtr GetDirectFBWindow() const { return m_dfbwin; }
+ wxIDirectFBWindowPtr GetDirectFBWindow() const { return m_dfbwin; }
+
+ // Returns true if some invalidated area of the TLW is currently being
+ // painted
+ bool IsPainting() const { return m_isPainting; }
protected:
// common part of all ctors
void Init();
- virtual IDirectFBSurfacePtr ObtainDfbSurface() const;
+ virtual wxIDirectFBSurfacePtr ObtainDfbSurface() const;
// overriden wxWindow methods
virtual void DoGetPosition(int *x, int *y) const;
virtual void DoGetSize(int *width, int *height) const;
virtual void DoMoveWindow(int x, int y, int width, int height);
- virtual void DoRefreshRect(const wxRect& rect, bool eraseBack = true);
+ virtual void DoRefreshRect(const wxRect& rect);
+
+ // sets DirectFB keyboard focus to this toplevel window (note that DFB
+ // focus is different from wx: only shown TLWs can have it and not any
+ // wxWindows as in wx
+ void SetDfbFocus();
private:
// do queued painting in idle time
wxByte m_opacity;
// interface to the underlying DirectFB window
- IDirectFBWindowPtr m_dfbwin;
+ wxIDirectFBWindowPtr m_dfbwin;
private:
+ // invalidated areas of the TLW that need repainting
wxDfbQueuedPaintRequests *m_toPaint;
+ // are we currently painting some area of this TLW?
+ bool m_isPainting;
friend class wxEventLoop; // for HandleDFBWindowEvent
+ friend class wxWindowDFB; // for SetDfbFocus
};
#endif // _WX_DFB_TOPLEVEL_H_