X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/336d8ae9a3feae7b2c3ecd8f64fe0e16984edfe7..8c36c49496660f0779584c6a318c7416c519f84d:/src/richtext/richtextstyles.cpp diff --git a/src/richtext/richtextstyles.cpp b/src/richtext/richtextstyles.cpp index 37ac00b4fc..5fa16bb54e 100644 --- a/src/richtext/richtextstyles.cpp +++ b/src/richtext/richtextstyles.cpp @@ -401,7 +401,7 @@ bool wxRichTextStyleSheet::AddStyle(wxRichTextStyleDefinition* def) wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(def, wxRichTextCharacterStyleDefinition); if (charDef) return AddCharacterStyle(charDef); - + return false; } @@ -419,8 +419,8 @@ wxRichTextStyleDefinition* wxRichTextStyleSheet::FindStyle(const wxString& name, wxRichTextCharacterStyleDefinition* charDef = FindCharacterStyle(name, recurse); if (charDef) return charDef; - - return NULL; + + return NULL; } /// Copy @@ -447,7 +447,7 @@ void wxRichTextStyleSheet::Copy(const wxRichTextStyleSheet& sheet) wxRichTextListStyleDefinition* def = (wxRichTextListStyleDefinition*) node->GetData(); AddListStyle(new wxRichTextListStyleDefinition(*def)); } - + SetName(sheet.GetName()); SetDescription(sheet.GetDescription()); } @@ -509,32 +509,10 @@ wxRichTextStyleDefinition* wxRichTextStyleListBox::GetStyle(size_t i) const if (!GetStyleSheet()) return NULL; - if (GetStyleType() == wxRICHTEXT_STYLE_ALL) - { - // First paragraph styles, then character, then list - if (i < GetStyleSheet()->GetParagraphStyleCount()) - return GetStyleSheet()->GetParagraphStyle(i); - - if ((i - GetStyleSheet()->GetParagraphStyleCount()) < GetStyleSheet()->GetCharacterStyleCount()) - return GetStyleSheet()->GetCharacterStyle(i - GetStyleSheet()->GetParagraphStyleCount()); - - if ((i - GetStyleSheet()->GetParagraphStyleCount() - GetStyleSheet()->GetCharacterStyleCount()) < GetStyleSheet()->GetListStyleCount()) - return GetStyleSheet()->GetListStyle(i - GetStyleSheet()->GetParagraphStyleCount() - GetStyleSheet()->GetCharacterStyleCount()); - } - else if ((GetStyleType() == wxRICHTEXT_STYLE_PARAGRAPH) && (i < GetStyleSheet()->GetParagraphStyleCount())) - { - return GetStyleSheet()->GetParagraphStyle(i); - } - else if ((GetStyleType() == wxRICHTEXT_STYLE_CHARACTER) && (i < GetStyleSheet()->GetCharacterStyleCount())) - { - return GetStyleSheet()->GetCharacterStyle(i); - } - else if ((GetStyleType() == wxRICHTEXT_STYLE_LIST) && (i < GetStyleSheet()->GetListStyleCount())) - { - return GetStyleSheet()->GetListStyle(i); - } + if (i >= m_styleNames.GetCount() /* || i < 0 */ ) + return NULL; - return NULL; + return GetStyleSheet()->FindStyle(m_styleNames[i]); } /// Updates the list @@ -544,14 +522,27 @@ void wxRichTextStyleListBox::UpdateStyles() { SetSelection(wxNOT_FOUND); - if (GetStyleType() == wxRICHTEXT_STYLE_ALL) - SetItemCount(GetStyleSheet()->GetParagraphStyleCount()+GetStyleSheet()->GetCharacterStyleCount()+GetStyleSheet()->GetListStyleCount()); - else if (GetStyleType() == wxRICHTEXT_STYLE_PARAGRAPH) - SetItemCount(GetStyleSheet()->GetParagraphStyleCount()); - else if (GetStyleType() == wxRICHTEXT_STYLE_CHARACTER) - SetItemCount(GetStyleSheet()->GetCharacterStyleCount()); - else if (GetStyleType() == wxRICHTEXT_STYLE_LIST) - SetItemCount(GetStyleSheet()->GetListStyleCount()); + m_styleNames.Clear(); + + size_t i; + if (GetStyleType() == wxRICHTEXT_STYLE_ALL || GetStyleType() == wxRICHTEXT_STYLE_PARAGRAPH) + { + for (i = 0; i < GetStyleSheet()->GetParagraphStyleCount(); i++) + m_styleNames.Add(GetStyleSheet()->GetParagraphStyle(i)->GetName()); + } + if (GetStyleType() == wxRICHTEXT_STYLE_ALL || GetStyleType() == wxRICHTEXT_STYLE_CHARACTER) + { + for (i = 0; i < GetStyleSheet()->GetCharacterStyleCount(); i++) + m_styleNames.Add(GetStyleSheet()->GetCharacterStyle(i)->GetName()); + } + if (GetStyleType() == wxRICHTEXT_STYLE_ALL || GetStyleType() == wxRICHTEXT_STYLE_LIST) + { + for (i = 0; i < GetStyleSheet()->GetListStyleCount(); i++) + m_styleNames.Add(GetStyleSheet()->GetListStyle(i)->GetName()); + } + + m_styleNames.Sort(); + SetItemCount(m_styleNames.GetCount()); Refresh(); @@ -566,19 +557,7 @@ void wxRichTextStyleListBox::UpdateStyles() // Get index for style name int wxRichTextStyleListBox::GetIndexForStyle(const wxString& name) const { - if (GetStyleSheet()) - { - int count = GetItemCount(); - - int i; - for (i = 0; i < (int) count; i++) - { - wxRichTextStyleDefinition* def = GetStyle(i); - if (def->GetName() == name) - return i; - } - } - return -1; + return m_styleNames.Index(name); } /// Set selection for string @@ -610,7 +589,7 @@ wxString wxRichTextStyleListBox::CreateHTML(wxRichTextStyleDefinition* def) cons wxString str; bool isCentred = false; - + wxRichTextAttr attr(def->GetStyleMergedWithBase(GetStyleSheet())); if (attr.HasAlignment() && attr.GetAlignment() == wxTEXT_ALIGNMENT_CENTRE) @@ -619,7 +598,7 @@ wxString wxRichTextStyleListBox::CreateHTML(wxRichTextStyleDefinition* def) cons if (isCentred) str << wxT("
"); - + str << wxT(""); if (attr.GetLeftIndent() > 0) @@ -743,15 +722,20 @@ wxString wxRichTextStyleListBox::GetStyleToShowInIdleTime(wxRichTextCtrl* ctrl, // Take into account current default style just chosen by user if (ctrl->IsDefaultStyleShowing()) { + wxTextAttrEx attr; + + ctrl->GetStyle(adjustedCaretPos, attr); + wxRichTextApplyStyle(attr, ctrl->GetDefaultStyleEx()); + if ((styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_CHARACTER) && - !ctrl->GetDefaultStyleEx().GetCharacterStyleName().IsEmpty()) - styleName = ctrl->GetDefaultStyleEx().GetCharacterStyleName(); + !attr.GetCharacterStyleName().IsEmpty()) + styleName = attr.GetCharacterStyleName(); else if ((styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_PARAGRAPH) && - !ctrl->GetDefaultStyleEx().GetParagraphStyleName().IsEmpty()) - styleName = ctrl->GetDefaultStyleEx().GetParagraphStyleName(); + !attr.GetParagraphStyleName().IsEmpty()) + styleName = attr.GetParagraphStyleName(); else if ((styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_LIST) && - !ctrl->GetDefaultStyleEx().GetListStyleName().IsEmpty()) - styleName = ctrl->GetDefaultStyleEx().GetListStyleName(); + !attr.GetListStyleName().IsEmpty()) + styleName = attr.GetListStyleName(); } else if (obj && (styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_CHARACTER) && !obj->GetAttributes().GetCharacterStyleName().IsEmpty()) @@ -838,7 +822,7 @@ bool wxRichTextStyleListCtrl::Create(wxWindow* parent, wxWindowID id, const wxPo bool showSelector = ((style & wxRICHTEXTSTYLELIST_HIDE_TYPE_SELECTOR) == 0); - m_styleListBox = new wxRichTextStyleListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, showSelector ? wxSIMPLE_BORDER : wxNO_BORDER); + m_styleListBox = new wxRichTextStyleListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, showSelector ? wxBORDER_DEFAULT : wxBORDER_NONE); wxBoxSizer* boxSizer = new wxBoxSizer(wxVERTICAL); @@ -853,7 +837,7 @@ bool wxRichTextStyleListCtrl::Create(wxWindow* parent, wxWindowID id, const wxPo m_styleChoice = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, choices); boxSizer->Add(m_styleListBox, 1, wxALL|wxEXPAND, 5); - boxSizer->Add(m_styleChoice, 0, wxALL|wxEXPAND, 5); + boxSizer->Add(m_styleChoice, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, 5); } else { @@ -971,8 +955,10 @@ wxRichTextCtrl* wxRichTextStyleListCtrl::GetRichTextCtrl() const /// Set/get the style type to display void wxRichTextStyleListCtrl::SetStyleType(wxRichTextStyleListBox::wxRichTextStyleType styleType) { - if (m_styleListBox) - m_styleListBox->SetStyleType(styleType); + if ( !m_styleListBox ) + return; + + m_styleListBox->SetStyleType(styleType); m_dontUpdate = true; @@ -1012,6 +998,17 @@ BEGIN_EVENT_TABLE(wxRichTextStyleComboPopup, wxRichTextStyleListBox) EVT_LEFT_DOWN(wxRichTextStyleComboPopup::OnMouseClick) END_EVENT_TABLE() +bool wxRichTextStyleComboPopup::Create( wxWindow* parent ) +{ + int borderStyle = GetDefaultBorder(); + if (borderStyle == wxBORDER_SUNKEN) + borderStyle = wxBORDER_SIMPLE; + + return wxRichTextStyleListBox::Create(parent, wxID_ANY, + wxPoint(0,0), wxDefaultSize, + borderStyle); +} + void wxRichTextStyleComboPopup::SetStringValue( const wxString& s ) { m_value = SetStyleSelection(s); @@ -1102,9 +1099,19 @@ bool wxRichTextStyleComboCtrl::Create(wxWindow* parent, wxWindowID id, const wxP void wxRichTextStyleComboCtrl::OnIdle(wxIdleEvent& event) { - if (GetRichTextCtrl() && !IsPopupShown() && m_stylePopup && wxWindow::FindFocus() != this) + event.Skip(); + + if ( !m_stylePopup ) + return; + + wxRichTextCtrl * const richtext = GetRichTextCtrl(); + if ( !richtext ) + return; + + if ( !IsPopupShown() && wxWindow::FindFocus() != this ) { - wxString styleName = wxRichTextStyleListBox::GetStyleToShowInIdleTime(GetRichTextCtrl(), m_stylePopup->GetStyleType()); + wxString styleName = + wxRichTextStyleListBox::GetStyleToShowInIdleTime(richtext, m_stylePopup->GetStyleType()); wxString currentValue = GetValue(); if (!styleName.IsEmpty()) @@ -1118,7 +1125,6 @@ void wxRichTextStyleComboCtrl::OnIdle(wxIdleEvent& event) else if (!currentValue.IsEmpty()) SetValue(wxEmptyString); } - event.Skip(); } #endif