X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2fce6547622ff5f9e4ec31372b0f6172e87edefa..9acbe413f9d63c0925d5bfc232e96581474f5234:/src/richtext/richtextstyles.cpp diff --git a/src/richtext/richtextstyles.cpp b/src/richtext/richtextstyles.cpp index e530832977..0ce957ad79 100644 --- a/src/richtext/richtextstyles.cpp +++ b/src/richtext/richtextstyles.cpp @@ -714,17 +714,14 @@ wxString wxRichTextStyleListBox::GetStyleToShowInIdleTime(wxRichTextCtrl* ctrl, { int adjustedCaretPos = ctrl->GetAdjustedCaretPosition(ctrl->GetCaretPosition()); - wxRichTextParagraph* para = ctrl->GetBuffer().GetParagraphAtPosition(adjustedCaretPos); - wxRichTextObject* obj = ctrl->GetBuffer().GetLeafObjectAtPosition(adjustedCaretPos); - wxString styleName; + wxTextAttr attr; + ctrl->GetStyle(adjustedCaretPos, attr); + // Take into account current default style just chosen by user if (ctrl->IsDefaultStyleShowing()) { - wxTextAttr attr; - - ctrl->GetStyle(adjustedCaretPos, attr); wxRichTextApplyStyle(attr, ctrl->GetDefaultStyleEx()); if ((styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_CHARACTER) && @@ -737,20 +734,20 @@ wxString wxRichTextStyleListBox::GetStyleToShowInIdleTime(wxRichTextCtrl* ctrl, !attr.GetListStyleName().IsEmpty()) styleName = attr.GetListStyleName(); } - else if (obj && (styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_CHARACTER) && - !obj->GetAttributes().GetCharacterStyleName().IsEmpty()) + else if ((styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_CHARACTER) && + !attr.GetCharacterStyleName().IsEmpty()) { - styleName = obj->GetAttributes().GetCharacterStyleName(); + styleName = attr.GetCharacterStyleName(); } - else if (para && (styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_PARAGRAPH) && - !para->GetAttributes().GetParagraphStyleName().IsEmpty()) + else if ((styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_PARAGRAPH) && + !attr.GetParagraphStyleName().IsEmpty()) { - styleName = para->GetAttributes().GetParagraphStyleName(); + styleName = attr.GetParagraphStyleName(); } - else if (para && (styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_LIST) && - !para->GetAttributes().GetListStyleName().IsEmpty()) + else if ((styleType == wxRICHTEXT_STYLE_ALL || styleType == wxRICHTEXT_STYLE_LIST) && + !attr.GetListStyleName().IsEmpty()) { - styleName = para->GetAttributes().GetListStyleName(); + styleName = attr.GetListStyleName(); } return styleName; @@ -759,7 +756,7 @@ wxString wxRichTextStyleListBox::GetStyleToShowInIdleTime(wxRichTextCtrl* ctrl, /// Auto-select from style under caret in idle time void wxRichTextStyleListBox::OnIdle(wxIdleEvent& event) { - if (CanAutoSetSelection() && GetRichTextCtrl() && wxWindow::FindFocus() != this) + if (CanAutoSetSelection() && GetRichTextCtrl() && IsShownOnScreen() && wxWindow::FindFocus() != this) { wxString styleName = GetStyleToShowInIdleTime(GetRichTextCtrl(), GetStyleType()); @@ -1117,7 +1114,7 @@ void wxRichTextStyleComboCtrl::OnIdle(wxIdleEvent& event) if ( !richtext ) return; - if ( !IsPopupShown() && wxWindow::FindFocus() != this ) + if ( !IsPopupShown() && IsShownOnScreen() && wxWindow::FindFocus() != this ) { wxString styleName = wxRichTextStyleListBox::GetStyleToShowInIdleTime(richtext, m_stylePopup->GetStyleType());