X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4dd9fdf82749bb5f9e2bf9c2ad1bbd59e0eeb00e..78a17075019ea5bed5085d3afeb822c47d77a82c:/src/osx/cocoa/scrolbar.mm diff --git a/src/osx/cocoa/scrolbar.mm b/src/osx/cocoa/scrolbar.mm index 533f5e92dc..dd9c9e18dc 100644 --- a/src/osx/cocoa/scrolbar.mm +++ b/src/osx/cocoa/scrolbar.mm @@ -19,6 +19,7 @@ #include "wx/settings.h" #endif +#include "wx/math.h" #include "wx/osx/private.h" @interface wxNSScroller : NSScroller @@ -31,7 +32,7 @@ + (void)initialize { static BOOL initialized = NO; - if (!initialized) + if (!initialized) { initialized = YES; wxOSXCocoaClassAddWXMethods(self); @@ -47,13 +48,13 @@ public : { m_maximum = 1; } - + void SetMaximum(wxInt32 v) { m_maximum = (v == 0) ? 1 : v; } - - void SetScrollThumb( wxInt32 value, wxInt32 thumbSize ) + + void SetScrollThumb( wxInt32 value, wxInt32 thumbSize ) { double v = ((double) value)/m_maximum; double t = ((double) thumbSize)/(m_maximum+thumbSize); @@ -64,33 +65,33 @@ public : [(wxNSScroller*) m_osxView setKnobProportion:t]; #endif } - + virtual wxInt32 GetValue() const { - return [(wxNSScroller*) m_osxView floatValue] * m_maximum; + return wxRound([(wxNSScroller*) m_osxView floatValue] * m_maximum); } - + virtual wxInt32 GetMaximum() const { return m_maximum; } - virtual void clickedAction(WXWidget slf, void* _cmd, void *sender); + virtual void controlAction(WXWidget slf, void* _cmd, void *sender); virtual void mouseEvent(WX_NSEvent event, WXWidget slf, void* _cmd); protected: wxInt32 m_maximum; }; -// we will have a mouseDown, then in the native +// we will have a mouseDown, then in the native // implementation of mouseDown the tracking code // is calling clickedAction, therefore we wire this -// to thumbtrack and only after super mouseDown +// to thumbtrack and only after super mouseDown // returns we will call the thumbrelease -void wxOSXScrollBarCocoaImpl::clickedAction( WXWidget slf, void *_cmd, void *sender) +void wxOSXScrollBarCocoaImpl::controlAction( WXWidget WXUNUSED(slf), void *WXUNUSED(_cmd), void *WXUNUSED(sender)) { wxEventType scrollEvent = wxEVT_NULL; - switch ([(NSScroller*)m_osxView hitPart]) + switch ([(NSScroller*)m_osxView hitPart]) { case NSScrollerIncrementLine: scrollEvent = wxEVT_SCROLL_LINEDOWN; @@ -121,7 +122,7 @@ void wxOSXScrollBarCocoaImpl::clickedAction( WXWidget slf, void *_cmd, void *sen void wxOSXScrollBarCocoaImpl::mouseEvent(WX_NSEvent event, WXWidget slf, void *_cmd) { wxWidgetCocoaImpl::mouseEvent(event, slf, _cmd); - + // send a release event in case we've been tracking the thumb if ( strcmp( sel_getName((SEL) _cmd) , "mouseDown:") == 0 ) { @@ -135,16 +136,20 @@ void wxOSXScrollBarCocoaImpl::mouseEvent(WX_NSEvent event, WXWidget slf, void *_ } } -wxWidgetImplType* wxWidgetImpl::CreateScrollBar( wxWindowMac* wxpeer, - wxWindowMac* parent, - wxWindowID id, - const wxPoint& pos, +wxWidgetImplType* wxWidgetImpl::CreateScrollBar( wxWindowMac* wxpeer, + wxWindowMac* WXUNUSED(parent), + wxWindowID WXUNUSED(id), + const wxPoint& pos, const wxSize& size, - long style, - long extraStyle) + long style, + long WXUNUSED(extraStyle)) { NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ; - wxNSScroller* v = [[wxNSScroller alloc] initWithFrame:r]; + // the creation rect defines the orientation + NSRect createRect = ( style & wxSB_HORIZONTAL ) ? NSMakeRect(r.origin.x, r.origin.y , 17, 16) : + NSMakeRect(r.origin.x, r.origin.y , 16, 17); + wxNSScroller* v = [[wxNSScroller alloc] initWithFrame:createRect]; + [v setFrame:r]; wxWidgetCocoaImpl* c = new wxOSXScrollBarCocoaImpl( wxpeer, v ); [v setEnabled:YES];