]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/tipwin.h
account for scroll offset correctly in the mouse event handler
[wxWidgets.git] / include / wx / tipwin.h
index 3a82a5c064e2b97d673bd58f93cc93e68fbff4f8..6b448ec1017af0d3d05243e9789b6f2a3ecfe1b0 100644 (file)
@@ -7,62 +7,92 @@
 // Created:     10.09.00
 // RCS-ID:      $Id$
 // Copyright:   (c) 2000 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_TIPWIN_H_
 #define _WX_TIPWIN_H_
 
-#ifdef __GNUG__
-    #pragma interface "tipwin.h"
-#endif
-
 #if wxUSE_TIPWINDOW
 
 #if wxUSE_POPUPWIN
-#include "wx/popupwin.h"
+    #include "wx/popupwin.h"
+
+    #define wxTipWindowBase wxPopupTransientWindow
 #else
-#include "wx/frame.h"
+    #include "wx/frame.h"
+
+    #define wxTipWindowBase wxFrame
 #endif
+#include "wx/arrstr.h"
+
+class WXDLLIMPEXP_FWD_CORE wxTipWindowView;
 
 // ----------------------------------------------------------------------------
 // wxTipWindow
 // ----------------------------------------------------------------------------
 
-#if wxUSE_POPUPWIN
-class WXDLLEXPORT wxTipWindow : public wxPopupTransientWindow
-#else
-class WXDLLEXPORT wxTipWindow : public wxFrame
-#endif
+class WXDLLIMPEXP_CORE wxTipWindow : public wxTipWindowBase
 {
-    friend class wxTipWindowView;
 public:
-    // Supply windowPtr for it to null the given address
-    // when the window has closed.
+    // the mandatory ctor parameters are: the parent window and the text to
+    // show
+    //
+    // optionally you may also specify the length at which the lines are going
+    // to be broken in rows (100 pixels by default)
+    //
+    // windowPtr and rectBound are just passed to SetTipWindowPtr() and
+    // SetBoundingRect() - see below
     wxTipWindow(wxWindow *parent,
                 const wxString& text,
-                wxCoord maxLength = 100, wxTipWindow** windowPtr = NULL);
-    ~wxTipWindow();
+                wxCoord maxLength = 100,
+                wxTipWindow** windowPtr = NULL,
+                wxRect *rectBound = NULL);
+
+    virtual ~wxTipWindow();
 
+    // If windowPtr is not NULL the given address will be NULLed when the
+    // window has closed
     void SetTipWindowPtr(wxTipWindow** windowPtr) { m_windowPtr = windowPtr; }
 
+    // If rectBound is not NULL, the window will disappear automatically when
+    // the mouse leave the specified rect: note that rectBound should be in the
+    // screen coordinates!
+    void SetBoundingRect(const wxRect& rectBound);
+
+    // Hide and destroy the window
     void Close();
 
 protected:
+    // called by wxTipWindowView only
+    bool CheckMouseInBounds(const wxPoint& pos);
+
     // event handlers
     void OnMouseClick(wxMouseEvent& event);
+
 #if !wxUSE_POPUPWIN
     void OnActivate(wxActivateEvent& event);
     void OnKillFocus(wxFocusEvent& event);
-#endif
+#else // wxUSE_POPUPWIN
+    virtual void OnDismiss();
+#endif // wxUSE_POPUPWIN/!wxUSE_POPUPWIN
 
 private:
     wxArrayString m_textLines;
     wxCoord m_heightLine;
+
+    wxTipWindowView *m_view;
+
     wxTipWindow** m_windowPtr;
+    wxRect m_rectBound;
 
     DECLARE_EVENT_TABLE()
+
+    friend class wxTipWindowView;
+
+    DECLARE_NO_COPY_CLASS(wxTipWindow)
 };
 
 #endif // wxUSE_TIPWINDOW
+
 #endif // _WX_TIPWIN_H_