]> git.saurik.com Git - wxWidgets.git/commitdiff
Move wxWindowCocoaScrollView class into its own header.
authorDavid Elliott <dfe@tgwbd.org>
Thu, 14 Feb 2008 21:08:44 +0000 (21:08 +0000)
committerDavid Elliott <dfe@tgwbd.org>
Thu, 14 Feb 2008 21:08:44 +0000 (21:08 +0000)
(Equivalent of r51796 on the 2.8 branch)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51797 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/cocoa/private/scrollview.h [new file with mode: 0644]
src/cocoa/window.mm

diff --git a/include/wx/cocoa/private/scrollview.h b/include/wx/cocoa/private/scrollview.h
new file mode 100644 (file)
index 0000000..dd2bdc1
--- /dev/null
@@ -0,0 +1,129 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/cocoa/scrollview.h
+// Purpose:     wxWindowCocoaScrollView
+// Author:      David Elliott
+// Modified by:
+// Created:     2008/02/14
+// RCS-ID:      $Id$
+// Copyright:   (c) 2003- David Elliott
+// Licence:     wxWidgets licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_COCOA_SCROLLVIEW_H__
+#define _WX_COCOA_SCROLLVIEW_H__
+
+@class NSScroller;
+
+// ========================================================================
+// wxWindowCocoaScrollView
+// ========================================================================
+class wxWindowCocoaScrollView: protected wxCocoaNSView
+{
+    DECLARE_NO_COPY_CLASS(wxWindowCocoaScrollView)
+public:
+    wxWindowCocoaScrollView(wxWindow *owner);
+    virtual ~wxWindowCocoaScrollView();
+    inline WX_NSScrollView GetNSScrollView() { return m_cocoaNSScrollView; }
+    void ClientSizeToSize(int &width, int &height);
+    void DoGetClientSize(int *x, int *y) const;
+    void Encapsulate();
+    void Unencapsulate();
+
+    // wxWindow calls this to do the work.  Note that we don't have the refresh parameter
+    // because wxWindow handles that itself.
+    void SetScrollbar(int orientation, int position, int thumbSize, int range);
+    int GetScrollPos(wxOrientation orient);
+    void SetScrollPos(wxOrientation orient, int position);
+    int GetScrollRange(wxOrientation orient);
+    int GetScrollThumb(wxOrientation orient);
+    void ScrollWindow(int dx, int dy, const wxRect*);
+    void UpdateSizes();
+
+    void _wx_doScroller(NSScroller *sender);
+
+protected:
+    wxWindowCocoa *m_owner;
+    WX_NSScrollView m_cocoaNSScrollView;
+    virtual void Cocoa_FrameChanged(void);
+    virtual void Cocoa_synthesizeMouseMoved(void) {}
+    /*!
+        Flag as to whether we're scrolling for a native view or a custom
+        wxWindow.  This controls the scrolling behavior.  When providing
+        scrolling for a native view we don't catch scroller action messages
+        and thus don't send scroll events and we don't actually scroll the
+        window when the application calls ScrollWindow.
+
+        When providing scrolling for a custom wxWindow, we make the NSScroller
+        send their action messages to us which we in turn package as wx window
+        scrolling events.  At this point, the window will not physically be
+        scrolled.  The application will most likely handle the event by calling
+        ScrollWindow which will do the real scrolling.  On the other hand,
+        the application may instead not call ScrollWindow until some threshold
+        is reached.  This causes the window to only scroll in steps which is
+        what, for instance, wxScrolledWindow does.
+     */
+    bool m_isNativeView;
+    /*!
+        The range as the application code wishes to see it.  That is, the
+        range from the last SetScrollbar call for the appropriate dimension.
+        The horizontal dimension is the first [0] element and the vertical
+        dimension the second [1] element.
+
+        In wxMSW, a SCROLLINFO with nMin=0 and nMax=range-1 is used which
+        gives exactly range possible positions so long as nPage (which is
+        the thumb size) is less than or equal to 1.
+     */
+    int m_scrollRange[2];
+    /*!
+        The thumb size is intended to reflect the size of the visible portion
+        of the scrolled document.  As the document size increases, the thumb
+        visible thumb size decreases.  As document size decreases, the visible
+        thumb size increases.  However, the thumb size on wx is defined in
+        terms of scroll units (which are effectively defined by the scroll
+        range) and so increasing the number of scroll units to reflect increased
+        document size will have the effect of decreasing the visible thumb
+        size even though the number doesn't change.
+
+        It's also important to note that subtracting the thumb size from the
+        full range gives you the real range that can be used.  Microsoft
+        defines nPos (the current scrolling position) to be within the range
+        from nMin to nMax - max(nPage - 1, 0).  We know that wxMSW code always
+        sets nMin = 0 and nMax = range -1.  So let's algebraically reduce the
+        definition of the maximum allowed position:
+
+        Begin:
+        = nMax - max(nPage - 1, 0)
+        Substitute (range - 1) for nMax and thumbSize for nPage:
+        = range - 1 - max(thumbSize - 1, 0)
+        Add one inside the max conditional and subtract one outside of it:
+        = range - 1 - (max(thumbSize - 1 + 1, 1) - 1)
+        Reduce some constants:
+        = range - 1 - (max(thumbSize, 1) - 1)
+        Distribute the negative across the parenthesis:
+        = range - 1 - max(thumbSize, 1) + 1
+        Reduce the constants:
+        = range - max(thumbSize, 1)
+
+        Also keep in mind that thumbSize may never be greater than range but
+        can be equal to it.  Thus for the smallest possible thumbSize there
+        are exactly range possible scroll positions (numbered from 0 to
+        range - 1) and for the largest possible thumbSize there is exactly
+        one possible scroll position (numbered 0).
+     */
+    int m_scrollThumb[2];
+
+    /*!
+        The origin of the virtual coordinate space expressed in terms of client
+        coordinates.  Starts at (0,0) and each call to ScrollWindow accumulates
+        into it.  Thus if the user scrolls the window right (thus causing the
+        contents to move left with respect to the client origin, the
+        application code (typically wxScrolledWindow) will be called with
+        dx of -something, for example -20.  This is added to m_virtualOrigin
+        and thus m_virtualOrigin will be (-20,0) in this example.
+     */
+    wxPoint m_virtualOrigin;
+private:
+    wxWindowCocoaScrollView();
+};
+
+#endif //ndef _WX_COCOA_SCROLLVIEW_H__
index 8449277a890243996102c5f838ac249da583c70f..bb25bcc3337e51c489e6c18524ca4a28ffc4f23d 100644 (file)
@@ -25,6 +25,7 @@
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
 #include "wx/cocoa/trackingrectmanager.h"
+#include "wx/cocoa/private/scrollview.h"
 #include "wx/mac/corefoundation/cfref.h"
 #include "wx/cocoa/ObjcRef.h"
 
@@ -289,118 +290,6 @@ private:
     wxWindowCocoaHider();
 };
 
-// ========================================================================
-// wxWindowCocoaScrollView
-// ========================================================================
-class wxWindowCocoaScrollView: protected wxCocoaNSView
-{
-    DECLARE_NO_COPY_CLASS(wxWindowCocoaScrollView)
-public:
-    wxWindowCocoaScrollView(wxWindow *owner);
-    virtual ~wxWindowCocoaScrollView();
-    inline WX_NSScrollView GetNSScrollView() { return m_cocoaNSScrollView; }
-    void ClientSizeToSize(int &width, int &height);
-    void DoGetClientSize(int *x, int *y) const;
-    void Encapsulate();
-    void Unencapsulate();
-
-    // wxWindow calls this to do the work.  Note that we don't have the refresh parameter
-    // because wxWindow handles that itself.
-    void SetScrollbar(int orientation, int position, int thumbSize, int range);
-    int GetScrollPos(wxOrientation orient);
-    void SetScrollPos(wxOrientation orient, int position);
-    int GetScrollRange(wxOrientation orient);
-    int GetScrollThumb(wxOrientation orient);
-    void ScrollWindow(int dx, int dy, const wxRect*);
-    void UpdateSizes();
-
-    void _wx_doScroller(NSScroller *sender);
-
-protected:
-    wxWindowCocoa *m_owner;
-    WX_NSScrollView m_cocoaNSScrollView;
-    virtual void Cocoa_FrameChanged(void);
-    virtual void Cocoa_synthesizeMouseMoved(void) {}
-    /*!
-        Flag as to whether we're scrolling for a native view or a custom
-        wxWindow.  This controls the scrolling behavior.  When providing
-        scrolling for a native view we don't catch scroller action messages
-        and thus don't send scroll events and we don't actually scroll the
-        window when the application calls ScrollWindow.
-
-        When providing scrolling for a custom wxWindow, we make the NSScroller
-        send their action messages to us which we in turn package as wx window
-        scrolling events.  At this point, the window will not physically be
-        scrolled.  The application will most likely handle the event by calling
-        ScrollWindow which will do the real scrolling.  On the other hand,
-        the application may instead not call ScrollWindow until some threshold
-        is reached.  This causes the window to only scroll in steps which is
-        what, for instance, wxScrolledWindow does.
-     */
-    bool m_isNativeView;
-    /*!
-        The range as the application code wishes to see it.  That is, the
-        range from the last SetScrollbar call for the appropriate dimension.
-        The horizontal dimension is the first [0] element and the vertical
-        dimension the second [1] element.
-
-        In wxMSW, a SCROLLINFO with nMin=0 and nMax=range-1 is used which
-        gives exactly range possible positions so long as nPage (which is
-        the thumb size) is less than or equal to 1.
-     */
-    int m_scrollRange[2];
-    /*!
-        The thumb size is intended to reflect the size of the visible portion
-        of the scrolled document.  As the document size increases, the thumb
-        visible thumb size decreases.  As document size decreases, the visible
-        thumb size increases.  However, the thumb size on wx is defined in
-        terms of scroll units (which are effectively defined by the scroll
-        range) and so increasing the number of scroll units to reflect increased
-        document size will have the effect of decreasing the visible thumb
-        size even though the number doesn't change.
-
-        It's also important to note that subtracting the thumb size from the
-        full range gives you the real range that can be used.  Microsoft
-        defines nPos (the current scrolling position) to be within the range
-        from nMin to nMax - max(nPage - 1, 0).  We know that wxMSW code always
-        sets nMin = 0 and nMax = range -1.  So let's algebraically reduce the
-        definition of the maximum allowed position:
-
-        Begin:
-        = nMax - max(nPage - 1, 0)
-        Substitute (range - 1) for nMax and thumbSize for nPage:
-        = range - 1 - max(thumbSize - 1, 0)
-        Add one inside the max conditional and subtract one outside of it:
-        = range - 1 - (max(thumbSize - 1 + 1, 1) - 1)
-        Reduce some constants:
-        = range - 1 - (max(thumbSize, 1) - 1)
-        Distribute the negative across the parenthesis:
-        = range - 1 - max(thumbSize, 1) + 1
-        Reduce the constants:
-        = range - max(thumbSize, 1)
-
-        Also keep in mind that thumbSize may never be greater than range but
-        can be equal to it.  Thus for the smallest possible thumbSize there
-        are exactly range possible scroll positions (numbered from 0 to
-        range - 1) and for the largest possible thumbSize there is exactly
-        one possible scroll position (numbered 0).
-     */
-    int m_scrollThumb[2];
-
-    /*!
-        The origin of the virtual coordinate space expressed in terms of client
-        coordinates.  Starts at (0,0) and each call to ScrollWindow accumulates
-        into it.  Thus if the user scrolls the window right (thus causing the
-        contents to move left with respect to the client origin, the
-        application code (typically wxScrolledWindow) will be called with
-        dx of -something, for example -20.  This is added to m_virtualOrigin
-        and thus m_virtualOrigin will be (-20,0) in this example.
-     */
-    wxPoint m_virtualOrigin;
-private:
-    wxWindowCocoaScrollView();
-};
-
 // ========================================================================
 // wxDummyNSView
 // ========================================================================