wxDFB_DECLARE_INTERFACE(IDirectFBSurface);
struct wxDFBWindowEvent;
-class WXDLLIMPEXP_CORE wxFont;
-class WXDLLIMPEXP_CORE wxTopLevelWindowDFB;
+class WXDLLIMPEXP_FWD_CORE wxFont;
+class WXDLLIMPEXP_FWD_CORE wxNonOwnedWindow;
+
+class wxOverlayImpl;
+class wxDfbOverlaysList;
// ---------------------------------------------------------------------------
// wxWindow
virtual void Clear();
virtual void Freeze();
virtual void Thaw();
- bool IsFrozen() const { return m_frozenness > 0; }
+ virtual bool IsFrozen() const { return m_frozenness > 0; }
virtual bool SetCursor(const wxCursor &cursor);
virtual bool SetFont(const wxFont &font) { m_font = font; return true; }
wxIDirectFBSurfacePtr GetDfbSurface();
// returns toplevel window the window belongs to
- wxTopLevelWindowDFB *GetTLW() const { return m_tlw; }
+ wxNonOwnedWindow *GetTLW() const { return m_tlw; }
void OnInternalIdle();
+ virtual bool IsDoubleBuffered() const { return true; }
+
protected:
// implement the base class pure virtuals
virtual void DoClientToScreen(int *x, int *y) const;
void InvalidateDfbSurface();
// called by parent to render (part of) the window
- void PaintWindow(const wxRect& rect, bool eraseBackground);
+ void PaintWindow(const wxRect& rect);
+
+ // paint window's overlays (if any) on top of window's surface
+ void PaintOverlays(const wxRect& rect);
- // implementation of Refresh()
- void DoRefreshWindow(bool eraseBack = true);
- virtual void DoRefreshRect(const wxRect& rect, bool eraseBack = true);
+ // refreshes the entire window (including non-client areas)
+ void DoRefreshWindow();
+ // refreshes given rectangle of the window (in window, _not_ client coords)
+ virtual void DoRefreshRect(const wxRect& rect);
+ // refreshes given rectangle; unlike RefreshRect(), the argument is in
+ // window, not client, coords and unlike DoRefreshRect() and like Refresh(),
+ // does nothing if the window is hidden or frozen
+ void RefreshWindowRect(const wxRect& rect);
+
+ // add/remove overlay for this window
+ void AddOverlay(wxOverlayImpl *overlay);
+ void RemoveOverlay(wxOverlayImpl *overlay);
// DirectFB events handling
void HandleKeyEvent(const wxDFBWindowEvent& event_);
// common part of all ctors
void Init();
// counterpart to SetFocus
- void KillFocus();
+ void DFBKillFocus();
protected:
// toplevel window (i.e. DirectFB window) this window belongs to
- wxTopLevelWindowDFB *m_tlw;
+ wxNonOwnedWindow *m_tlw;
private:
// subsurface of TLW's surface covered by this window
// number of calls to Freeze() minus number of calls to Thaw()
unsigned m_frozenness;
- friend class wxTopLevelWindowDFB; // for HandleXXXEvent
+ // overlays for this window (or NULL if it doesn't have any)
+ wxDfbOverlaysList *m_overlays;
+
+ friend class wxNonOwnedWindow; // for HandleXXXEvent
+ friend class wxOverlayImpl; // for Add/RemoveOverlay
+ friend class wxWindowDC; // for PaintOverlays
DECLARE_DYNAMIC_CLASS(wxWindowDFB)
DECLARE_NO_COPY_CLASS(wxWindowDFB)
DECLARE_EVENT_TABLE()
};
-
#endif // _WX_DFB_WINDOW_H_