]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dfb/window.h
check that the version of __sync_sub_and_fetch that returns a value is supported...
[wxWidgets.git] / include / wx / dfb / window.h
index 5ae337f2bfc49df58b42cbfd6a54e7e969166e7e..2fc0544cd26a25d97ce7759ae8d09be106fe6c81 100644 (file)
 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
@@ -72,7 +75,6 @@ public:
     virtual void Refresh(bool eraseBackground = true,
                          const wxRect *rect = (const wxRect *) NULL);
     virtual void Update();
-    virtual void Clear();
     virtual void Freeze();
     virtual void Thaw();
     virtual bool IsFrozen() const { return m_frozenness > 0; }
@@ -105,7 +107,7 @@ public:
     wxIDirectFBSurfacePtr GetDfbSurface();
 
     // returns toplevel window the window belongs to
-    wxTopLevelWindowDFB *GetTLW() const { return m_tlw; }
+    wxNonOwnedWindow *GetTLW() const { return m_tlw; }
 
     void OnInternalIdle();
 
@@ -144,10 +146,21 @@ protected:
     // called by parent to render (part of) the window
     void PaintWindow(const wxRect& rect);
 
+    // paint window's overlays (if any) on top of window's surface
+    void PaintOverlays(const wxRect& rect);
+
     // 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_);
@@ -160,7 +173,7 @@ private:
 
 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
@@ -173,7 +186,12 @@ private:
     // 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)