Use a non-native toolbar on Mac so small buttons aren't stretched horribly.
The style combo control also appears now that the toolbar is non-native. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70771 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -35,6 +35,7 @@
|
|||||||
#include "wx/sstream.h"
|
#include "wx/sstream.h"
|
||||||
#include "wx/html/htmlwin.h"
|
#include "wx/html/htmlwin.h"
|
||||||
#include "wx/stopwatch.h"
|
#include "wx/stopwatch.h"
|
||||||
|
#include "wx/sysopt.h"
|
||||||
|
|
||||||
#if wxUSE_FILESYSTEM
|
#if wxUSE_FILESYSTEM
|
||||||
#include "wx/filesys.h"
|
#include "wx/filesys.h"
|
||||||
@@ -634,6 +635,10 @@ MyFrame::MyFrame(const wxString& title, wxWindowID id, const wxPoint& pos,
|
|||||||
const wxSize& size, long style)
|
const wxSize& size, long style)
|
||||||
: wxFrame(NULL, id, title, pos, size, style)
|
: wxFrame(NULL, id, title, pos, size, style)
|
||||||
{
|
{
|
||||||
|
#ifdef __WXMAC__
|
||||||
|
SetWindowVariant(wxWINDOW_VARIANT_SMALL);
|
||||||
|
#endif
|
||||||
|
|
||||||
// set the frame icon
|
// set the frame icon
|
||||||
SetIcon(wxICON(sample));
|
SetIcon(wxICON(sample));
|
||||||
|
|
||||||
@@ -744,7 +749,21 @@ MyFrame::MyFrame(const wxString& title, wxWindowID id, const wxPoint& pos,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
wxToolBar* toolBar = CreateToolBar();
|
wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
SetSizer(sizer);
|
||||||
|
|
||||||
|
// On Mac, don't create a 'native' wxToolBar because small bitmaps are not supported by native
|
||||||
|
// toolbars. On Mac, a non-native, small-bitmap toolbar doesn't show unless it is explicitly
|
||||||
|
// managed, hence the use of sizers. In a real application, use larger icons for the main
|
||||||
|
// toolbar to avoid the need for this workaround. Or, use the toolbar in a container window
|
||||||
|
// as part of a more complex hierarchy, and the toolbar will automatically be non-native.
|
||||||
|
|
||||||
|
wxSystemOptions::SetOption(wxT("mac.toolbar.no-native"), 1);
|
||||||
|
|
||||||
|
wxToolBar* toolBar = new wxToolBar(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
|
||||||
|
wxNO_BORDER|wxTB_FLAT|wxTB_NODIVIDER|wxTB_NOALIGN);
|
||||||
|
|
||||||
|
sizer->Add(toolBar, 0, wxEXPAND);
|
||||||
|
|
||||||
toolBar->AddTool(wxID_OPEN, wxEmptyString, wxBitmap(open_xpm), _("Open"));
|
toolBar->AddTool(wxID_OPEN, wxEmptyString, wxBitmap(open_xpm), _("Open"));
|
||||||
toolBar->AddTool(wxID_SAVEAS, wxEmptyString, wxBitmap(save_xpm), _("Save"));
|
toolBar->AddTool(wxID_SAVEAS, wxEmptyString, wxBitmap(save_xpm), _("Save"));
|
||||||
@@ -768,14 +787,15 @@ MyFrame::MyFrame(const wxString& title, wxWindowID id, const wxPoint& pos,
|
|||||||
toolBar->AddTool(ID_FORMAT_INDENT_MORE, wxEmptyString, wxBitmap(indentmore_xpm), _("Indent More"));
|
toolBar->AddTool(ID_FORMAT_INDENT_MORE, wxEmptyString, wxBitmap(indentmore_xpm), _("Indent More"));
|
||||||
toolBar->AddSeparator();
|
toolBar->AddSeparator();
|
||||||
toolBar->AddTool(ID_FORMAT_FONT, wxEmptyString, wxBitmap(font_xpm), _("Font"));
|
toolBar->AddTool(ID_FORMAT_FONT, wxEmptyString, wxBitmap(font_xpm), _("Font"));
|
||||||
toolBar->AddTool(ID_FORMAT_IMAGE, wxString("Im"), wxBitmap(font_xpm), _("Image Property"));
|
toolBar->AddSeparator();
|
||||||
|
|
||||||
wxRichTextStyleComboCtrl* combo = new wxRichTextStyleComboCtrl(toolBar, ID_RICHTEXT_STYLE_COMBO, wxDefaultPosition, wxSize(200, -1));
|
wxRichTextStyleComboCtrl* combo = new wxRichTextStyleComboCtrl(toolBar, ID_RICHTEXT_STYLE_COMBO, wxDefaultPosition, wxSize(160, -1), wxCB_READONLY);
|
||||||
toolBar->AddControl(combo);
|
toolBar->AddControl(combo);
|
||||||
|
|
||||||
toolBar->Realize();
|
toolBar->Realize();
|
||||||
|
|
||||||
wxSplitterWindow* splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, GetClientSize(), wxSP_LIVE_UPDATE);
|
wxSplitterWindow* splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxSize(100,100), wxSP_LIVE_UPDATE);
|
||||||
|
sizer->Add(splitter, 1, wxEXPAND);
|
||||||
|
|
||||||
wxFont textFont = wxFont(12, wxROMAN, wxNORMAL, wxNORMAL);
|
wxFont textFont = wxFont(12, wxROMAN, wxNORMAL, wxNORMAL);
|
||||||
wxFont boldFont = wxFont(12, wxROMAN, wxNORMAL, wxBOLD);
|
wxFont boldFont = wxFont(12, wxROMAN, wxNORMAL, wxBOLD);
|
||||||
@@ -806,6 +826,8 @@ MyFrame::MyFrame(const wxString& title, wxWindowID id, const wxPoint& pos,
|
|||||||
splitter->SplitVertically(m_richTextCtrl, styleListCtrl, 500);
|
splitter->SplitVertically(m_richTextCtrl, styleListCtrl, 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Layout();
|
||||||
|
|
||||||
splitter->UpdateSize();
|
splitter->UpdateSize();
|
||||||
|
|
||||||
styleListCtrl->SetStyleSheet(wxGetApp().GetStyleSheet());
|
styleListCtrl->SetStyleSheet(wxGetApp().GetStyleSheet());
|
||||||
@@ -822,27 +844,10 @@ void MyFrame::WriteInitialText()
|
|||||||
|
|
||||||
r.SetDefaultStyle(wxRichTextAttr());
|
r.SetDefaultStyle(wxRichTextAttr());
|
||||||
|
|
||||||
// Add some locked content first - needs Undo to be enabled
|
r.Freeze();
|
||||||
{
|
|
||||||
r.BeginLock();
|
|
||||||
r.WriteText(wxString(wxT("This is a locked object.")));
|
|
||||||
r.EndLock();
|
|
||||||
|
|
||||||
r.WriteText(wxString(wxT(" This is unlocked text. ")));
|
|
||||||
|
|
||||||
r.BeginLock();
|
|
||||||
r.WriteText(wxString(wxT("More locked content.")));
|
|
||||||
r.EndLock();
|
|
||||||
r.Newline();
|
|
||||||
|
|
||||||
// Flush the Undo buffer
|
|
||||||
r.GetCommandProcessor()->ClearCommands();
|
|
||||||
}
|
|
||||||
|
|
||||||
r.BeginSuppressUndo();
|
r.BeginSuppressUndo();
|
||||||
|
|
||||||
r.Freeze();
|
|
||||||
|
|
||||||
r.BeginParagraphSpacing(0, 20);
|
r.BeginParagraphSpacing(0, 20);
|
||||||
|
|
||||||
r.BeginAlignment(wxTEXT_ALIGNMENT_CENTRE);
|
r.BeginAlignment(wxTEXT_ALIGNMENT_CENTRE);
|
||||||
@@ -1100,9 +1105,26 @@ void MyFrame::WriteInitialText()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
r.Thaw();
|
|
||||||
|
|
||||||
r.EndSuppressUndo();
|
r.EndSuppressUndo();
|
||||||
|
|
||||||
|
// Add some locked content first - needs Undo to be enabled
|
||||||
|
{
|
||||||
|
r.BeginLock();
|
||||||
|
r.WriteText(wxString(wxT("This is a locked object.")));
|
||||||
|
r.EndLock();
|
||||||
|
|
||||||
|
r.WriteText(wxString(wxT(" This is unlocked text. ")));
|
||||||
|
|
||||||
|
r.BeginLock();
|
||||||
|
r.WriteText(wxString(wxT("More locked content.")));
|
||||||
|
r.EndLock();
|
||||||
|
r.Newline();
|
||||||
|
|
||||||
|
// Flush the Undo buffer
|
||||||
|
r.GetCommandProcessor()->ClearCommands();
|
||||||
|
}
|
||||||
|
|
||||||
|
r.Thaw();
|
||||||
}
|
}
|
||||||
|
|
||||||
// event handlers
|
// event handlers
|
||||||
|
Reference in New Issue
Block a user