rendered paste bodyIndex: src/mac/carbon/textctrl.cpp
===================================================================
--- src/mac/carbon/textctrl.cpp (revision 83)
+++ src/mac/carbon/textctrl.cpp (working copy)
@@ -1852,8 +1852,9 @@
options |=
kTXNSupportEditCommandProcessing
| kTXNSupportEditCommandUpdating
- | kTXNSupportSpellCheckCommandProcessing
- | kTXNSupportSpellCheckCommandUpdating
+ // spell checking crashes text fields in the toolbar
+ // | kTXNSupportSpellCheckCommandProcessing
+ // | kTXNSupportSpellCheckCommandUpdating
| kTXNSupportFontCommandProcessing
| kTXNSupportFontCommandUpdating;
Index: src/mac/carbon/toolbar.cpp
===================================================================
--- src/mac/carbon/toolbar.cpp (revision 83)
+++ src/mac/carbon/toolbar.cpp (working copy)
@@ -50,6 +50,14 @@
const short kwxMacToolSpacing = 0;
#endif
+#if wxMAC_USE_NATIVE_TOOLBAR
+// separator types
+enum {
+ kSeparatorNormal = 0,
+ kSeparatorSpace = 1,
+ kSeparatorFlexibleSpace = 2
+};
+#endif
IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl)
@@ -109,6 +117,17 @@
m_controlHandle = handle;
}
+ int GetSeparatorType() const
+ {
+ return m_separatorType;
+ }
+
+ void SetSeparatorType(int inType)
+ {
+ wxASSERT(inType == kSeparatorNormal || inType == kSeparatorSpace || inType == kSeparatorFlexibleSpace);
+ m_separatorType = inType;
+ }
+
void SetPosition( const wxPoint& position );
void ClearControl()
@@ -122,6 +141,7 @@
#if wxMAC_USE_NATIVE_TOOLBAR
m_toolbarItemRef = NULL;
+ m_separatorType = 0;
#endif
}
@@ -177,7 +197,9 @@
if( controlWindow != NULL )
{
if ( m_controlHandle )
+ {
HideControl( m_controlHandle );
+ }
}
CFRetain( inToolbarItemRef );
@@ -222,6 +244,7 @@
#if wxMAC_USE_NATIVE_TOOLBAR
m_toolbarItemRef = NULL;
m_index = -1;
+ m_separatorType = 0;
#endif
}
@@ -233,6 +256,9 @@
HIToolbarItemRef m_toolbarItemRef;
// position in its toolbar, -1 means not inserted
CFIndex m_index;
+
+ // to handle separator/space/flexibleSpace
+ int m_separatorType;
#endif
};
@@ -702,7 +728,6 @@
{
HIToolbarItemRef item = NULL;
CFStringRef identifier = NULL;
- CFTypeRef data = NULL;
wxToolBarTool * tool = NULL;
// workaround for required NULL inUserData (any non-NULL value causes a crash)
@@ -797,7 +822,6 @@
OSStatus result = eventNotHandledErr;
wxToolBarTool *tool = NULL;
HIObjectRef toolbarItem = NULL;
- CFTypeRef data = NULL;
switch( GetEventClass( inEvent ))
{
@@ -1307,7 +1331,7 @@
#if wxMAC_USE_NATIVE_TOOLBAR
void *wxToolBar::CreateItemFromDrag( void* inDrag )
{
- DragRef drag = (DragRef) inDrag;
+ // DragRef drag = (DragRef) inDrag;
// returns HIToolbarItemRef
return NULL;
}
@@ -1565,6 +1589,20 @@
m_maxRows = nRows;
}
+wxToolBarToolBase * wxToolBar::InsertSpace(size_t pos)
+{
+ wxToolBarTool *tool = wx_static_cast( wxToolBarTool*, wxToolBarBase::InsertSpace(pos) );
+ tool->SetSeparatorType(kSeparatorSpace);
+ return tool;
+}
+
+wxToolBarToolBase * wxToolBar::InsertFlexibleSpace(size_t pos)
+{
+ wxToolBarTool *tool = wx_static_cast( wxToolBarTool*, wxToolBarBase::InsertFlexibleSpace(pos) );
+ tool->SetSeparatorType(kSeparatorFlexibleSpace);
+ return tool;
+}
+
void wxToolBar::MacSuperChangedPosition()
{
wxWindow::MacSuperChangedPosition();
@@ -1651,11 +1689,22 @@
// in flat style we need a visual separator
#if wxMAC_USE_NATIVE_TOOLBAR
HIToolbarItemRef item;
- err = HIToolbarItemCreate(
- kHIToolbarSeparatorIdentifier,
+ CFStringRef identifier = NULL;
+ OptionBits options = kHIToolbarItemNoAttributes;
// kHIToolbarItemCantBeRemoved | kHIToolbarItemIsSeparator | kHIToolbarItemAllowDuplicates,
- kHIToolbarItemIsSeparator,
- &item );
+ switch(tool->GetSeparatorType()) {
+ case kSeparatorNormal:
+ identifier = kHIToolbarSeparatorIdentifier;
+ options = kHIToolbarItemIsSeparator;
+ break;
+ case kSeparatorSpace:
+ identifier = kHIToolbarSpaceIdentifier;
+ break;
+ case kSeparatorFlexibleSpace:
+ identifier = kHIToolbarFlexibleSpaceIdentifier;
+ break;
+ }
+ err = HIToolbarItemCreate( identifier, options, &item );
if (err == noErr)
tool->SetToolbarItemRef( item );
#endif
@@ -1727,7 +1776,6 @@
#if wxMAC_USE_NATIVE_TOOLBAR
// disable for now since it causes a crash
- if( false )
{
HIToolbarItemRef item = NULL;
OSErr result = noErr;
Index: src/common/tbarbase.cpp
===================================================================
--- src/common/tbarbase.cpp (revision 83)
+++ src/common/tbarbase.cpp (working copy)
@@ -271,6 +271,26 @@
return tool;
}
+wxToolBarToolBase *wxToolBarBase::AddSpace()
+{
+ return InsertSpace(GetToolsCount());
+}
+
+wxToolBarToolBase *wxToolBarBase::InsertSpace(size_t pos)
+{
+ return InsertSeparator(pos);
+}
+
+wxToolBarToolBase *wxToolBarBase::AddFlexibleSpace()
+{
+ return InsertFlexibleSpace(GetToolsCount());
+}
+
+wxToolBarToolBase *wxToolBarBase::InsertFlexibleSpace(size_t pos)
+{
+ return InsertSeparator(pos);
+}
+
wxToolBarToolBase *wxToolBarBase::RemoveTool(int id)
{
size_t pos = 0;
Index: include/wx/mac/carbon/toolbar.h
===================================================================
--- include/wx/mac/carbon/toolbar.h (revision 83)
+++ include/wx/mac/carbon/toolbar.h (working copy)
@@ -57,6 +57,10 @@
virtual void SetRows(int nRows);
+ virtual wxToolBarToolBase *InsertSpace(size_t pos);
+
+ virtual wxToolBarToolBase *InsertFlexibleSpace(size_t pos);
+
// Add all the buttons
virtual wxString MacGetToolTipString( wxPoint &where ) ;
Index: include/wx/tbarbase.h
===================================================================
--- include/wx/tbarbase.h (revision 83)
+++ include/wx/tbarbase.h (working copy)
@@ -40,7 +40,7 @@
{
wxTOOL_STYLE_BUTTON = 1,
wxTOOL_STYLE_SEPARATOR = 2,
- wxTOOL_STYLE_CONTROL
+ wxTOOL_STYLE_CONTROL = 3
};
// ----------------------------------------------------------------------------
@@ -331,6 +331,14 @@
virtual wxToolBarToolBase *AddSeparator();
virtual wxToolBarToolBase *InsertSeparator(size_t pos);
+ // add a blank area to the toolbar
+ virtual wxToolBarToolBase *AddSpace();
+ virtual wxToolBarToolBase *InsertSpace(size_t pos);
+
+ // add a flexible blank area to the toolbar that fills any unused space
+ virtual wxToolBarToolBase *AddFlexibleSpace();
+ virtual wxToolBarToolBase *InsertFlexibleSpace(size_t pos);
+
// remove the tool from the toolbar: the caller is responsible for actually
// deleting the pointer
virtual wxToolBarToolBase *RemoveTool(int toolid);
Index: wxPython/src/_toolbar.i
===================================================================
--- wxPython/src/_toolbar.i (revision 83)
+++ wxPython/src/_toolbar.i (working copy)
@@ -314,6 +314,12 @@
wxToolBarToolBase *AddSeparator();
wxToolBarToolBase *InsertSeparator(size_t pos);
+ wxToolBarToolBase *AddSpace();
+ wxToolBarToolBase *InsertSpace(size_t pos);
+
+ wxToolBarToolBase *AddFlexibleSpace();
+ wxToolBarToolBase *InsertFlexibleSpace(size_t pos);
+
wxToolBarToolBase *RemoveTool(int id);
bool DeleteToolByPos(size_t pos);