/////////////////////////////////////////////////////////////////////////////
-// Name: slider.cpp
+// Name: src/osx/carbon/slider.cpp
// Purpose: wxSlider
// Author: Stefan Csomor
// Modified by:
// Created: 1998-01-01
-// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/slider.h"
#include "wx/osx/private.h"
-wxWidgetImplType* wxWidgetImpl::CreateSlider( wxWindowMac* wxpeer,
- wxWindowMac* parent,
- wxWindowID id,
+class wxMacSliderCarbonControl : public wxMacControl
+{
+public :
+ wxMacSliderCarbonControl( wxWindowMac* peer ) : wxMacControl( peer )
+ {
+ }
+
+ // work around an OSX bug : if the control is having the keyboard focus it cannot
+ // be set to the full max/min values by dragging
+ virtual bool CanFocus() const
+ {
+ return false;
+ }
+};
+
+
+wxWidgetImplType* wxWidgetImpl::CreateSlider( wxWindowMac* wxpeer,
+ wxWindowMac* parent,
+ wxWindowID WXUNUSED(id),
wxInt32 value,
wxInt32 minimum,
wxInt32 maximum,
- const wxPoint& pos,
+ const wxPoint& pos,
const wxSize& size,
- long style,
- long extraStyle)
+ long style,
+ long WXUNUSED(extraStyle))
{
Rect bounds = wxMacGetBoundsForControl( wxpeer, pos, size );
int tickMarks = 0;
if ( style & wxSL_AUTOTICKS )
tickMarks = (maximum - minimum) + 1; // +1 for the 0 value
- // keep the number of tickmarks from becoming unwieldly, therefore below it is ok to cast
+ // keep the number of tickmarks from becoming unwieldy, therefore below it is ok to cast
// it to a UInt16
while (tickMarks > 20)
tickMarks /= 5;
- wxMacControl* peer = new wxMacControl( wxpeer );
+ wxMacControl* peer = new wxMacSliderCarbonControl( wxpeer );
OSStatus err = CreateSliderControl(
MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds,
value, minimum, maximum,