]> git.saurik.com Git - wxWidgets.git/commitdiff
Simplify SetSelectionRange and make consistent with SetSelection.
authorJulian Smart <julian@anthemion.co.uk>
Mon, 1 Feb 2010 10:45:51 +0000 (10:45 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Mon, 1 Feb 2010 10:45:51 +0000 (10:45 +0000)
Fix a bug that returns true for character and paragraph style tests if no characters or paragraphs were found.
Fix SetSelection to position caret at end.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/richtext/richtextbuffer.cpp
src/richtext/richtextctrl.cpp

index fc722e8b62a275cf54f305df85bfd1cd227c4bca..bf1efe3ca3ba09712883bf39edf1c300c7e171eb 100644 (file)
@@ -2495,7 +2495,7 @@ bool wxRichTextParagraphLayoutBox::HasCharacterAttributes(const wxRichTextRange&
         node = node->GetNext();
     }
 
-    return foundCount == matchingCount;
+    return foundCount == matchingCount && foundCount != 0;
 }
 
 /// Test if this whole range has paragraph attributes of the specified kind. If any
@@ -2533,7 +2533,7 @@ bool wxRichTextParagraphLayoutBox::HasParagraphAttributes(const wxRichTextRange&
 
         node = node->GetNext();
     }
-    return foundCount == matchingCount;
+    return foundCount == matchingCount && foundCount != 0;
 }
 
 void wxRichTextParagraphLayoutBox::Clear()
index 9c55ab02fbe022d08ccadf35834c1b7fd903b793..a9910f4210f9f32c9bf257874752f09e91aaa7d2 100644 (file)
@@ -2174,8 +2174,7 @@ wxRichTextRange wxRichTextCtrl::AddImage(const wxImage& image)
 
 void wxRichTextCtrl::SelectAll()
 {
-    SetSelection(0, GetLastPosition()+1);
-    m_selectionAnchor = -1;
+    SetSelection(-1, -1);
 }
 
 /// Select none
@@ -2592,8 +2591,9 @@ void wxRichTextCtrl::SetSelection(long from, long to)
         wxRichTextRange oldSelection = m_selectionRange;
         m_selectionAnchor = from;
         m_selectionRange.SetRange(from, to-1);
-        if (from > -2)
-            m_caretPosition = from-1;
+
+        // Have to subtract 2, one because of endPos+1 rule (SetSelection docs) and another to turn into caret position.
+        m_caretPosition = wxMax(-1, to-2);
 
         RefreshForSelectionChange(oldSelection, m_selectionRange);
         PositionCaret();
@@ -3344,13 +3344,7 @@ wxRichTextRange wxRichTextCtrl::GetSelectionRange() const
 
 void wxRichTextCtrl::SetSelectionRange(const wxRichTextRange& range)
 {
-    wxRichTextRange range1(range);
-    if (range1 != wxRichTextRange(-2,-2) && range1 != wxRichTextRange(-1,-1) )
-        range1.SetEnd(range1.GetEnd() - 1);
-
-    wxASSERT( range1.GetStart() > range1.GetEnd() );
-
-    SetInternalSelectionRange(range1);
+    SetSelection(range.GetStart(), range.GetEnd());
 }
 
 /// Set list style