m_dragging = true;
CaptureMouse();
- SelectNone();
-
bool caretAtLineStart = false;
if (hit & wxRICHTEXT_HITTEST_BEFORE)
position --;
}
+ long oldCaretPos = m_caretPosition;
+
MoveCaret(position, caretAtLineStart);
SetDefaultStyleToCursorStyle();
+
+ if (event.ShiftDown())
+ {
+ bool extendSel = false;
+ if (m_selectionRange.GetStart() == -2)
+ extendSel = ExtendSelection(oldCaretPos, m_caretPosition, wxRICHTEXT_SHIFT_DOWN);
+ else
+ extendSel = ExtendSelection(m_caretPosition, m_caretPosition, wxRICHTEXT_SHIFT_DOWN);
+
+ if (extendSel)
+ Refresh(false);
+ }
+ else
+ SelectNone();
}
event.Skip();
wxPoint logicalPt = event.GetLogicalPosition(dc);
int hit = GetBuffer().HitTest(dc, logicalPt, position);
- if (hit != wxRICHTEXT_HITTEST_NONE)
+ if ((hit != wxRICHTEXT_HITTEST_NONE) && !(hit & wxRICHTEXT_HITTEST_OUTSIDE))
{
wxRichTextEvent cmdEvent(
wxEVT_COMMAND_RICHTEXT_LEFT_CLICK,
GetBuffer().InsertTextWithUndo(newPos+1, text, this);
}
else
- GetBuffer().InsertNewlineWithUndo(newPos+1, this, wxRICHTEXT_INSERT_WITH_PREVIOUS_PARAGRAPH_STYLE);
+ GetBuffer().InsertNewlineWithUndo(newPos+1, this, wxRICHTEXT_INSERT_WITH_PREVIOUS_PARAGRAPH_STYLE|wxRICHTEXT_INSERT_INTERACTIVE);
EndBatchUndo();
SetDefaultStyleToCursorStyle();
// so subtract 1 for deleted character and add 1 for conversion to character position.
if (m_caretPosition > -1 && !HasSelection())
{
- GetBuffer().DeleteRangeWithUndo(wxRichTextRange(m_caretPosition, m_caretPosition), this);
+ bool processed = false;
+ if (event.CmdDown())
+ {
+ long pos = wxRichTextCtrl::FindNextWordPosition(-1);
+ if (pos != -1 && (pos < m_caretPosition))
+ {
+ GetBuffer().DeleteRangeWithUndo(wxRichTextRange(pos+1, m_caretPosition), this);
+ processed = true;
+ }
+ }
+
+ if (!processed)
+ GetBuffer().DeleteRangeWithUndo(wxRichTextRange(m_caretPosition, m_caretPosition), this);
}
else
DeleteSelectedContent();
/// Add a new paragraph of text to the end of the buffer
wxRichTextRange wxRichTextCtrl::AddParagraph(const wxString& text)
{
- return GetBuffer().AddParagraph(text);
+ wxRichTextRange range = GetBuffer().AddParagraph(text);
+ LayoutContent();
+ return range;
}
/// Add an image
wxRichTextRange wxRichTextCtrl::AddImage(const wxImage& image)
{
- return GetBuffer().AddImage(image);
+ wxRichTextRange range = GetBuffer().AddImage(image);
+ LayoutContent();
+ return range;
}
// ----------------------------------------------------------------------------
if (!para)
return false;
+ if (position == para->GetRange().GetEnd())
+ position --;
+
long positionStart = position;
long positionEnd = position;
if (positionEnd >= para->GetRange().GetEnd())
positionEnd = para->GetRange().GetEnd();
+ if (positionEnd < positionStart)
+ return false;
+
SetSelection(positionStart, positionEnd+1);
if (positionStart >= 0)
}
DoSetSelection(from, to);
+ SetDefaultStyleToCursorStyle();
}
void wxRichTextCtrl::DoSetSelection(long from, long to, bool WXUNUSED(scrollCaret))
{
SelectNone();
- GetBuffer().DeleteRangeWithUndo(wxRichTextRange(from, to), this);
+ GetBuffer().DeleteRangeWithUndo(wxRichTextRange(from, to-1), this);
LayoutContent();
if (!IsFrozen())
if (HasSelection())
return SetStyleEx(GetSelectionRange(), attr, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE|wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY);
else
- SetAndShowDefaultStyle(attr);
+ {
+ wxRichTextAttr current = GetDefaultStyleEx();
+ current.Apply(attr);
+ SetAndShowDefaultStyle(current);
+ }
return true;
}
if (HasSelection())
return SetStyleEx(GetSelectionRange(), attr, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE|wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY);
else
- SetAndShowDefaultStyle(attr);
+ {
+ wxRichTextAttr current = GetDefaultStyleEx();
+ current.Apply(attr);
+ SetAndShowDefaultStyle(current);
+ }
return true;
}
if (HasSelection())
return SetStyleEx(GetSelectionRange(), attr, wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE|wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY);
else
- SetAndShowDefaultStyle(attr);
+ {
+ wxRichTextAttr current = GetDefaultStyleEx();
+ current.Apply(attr);
+ SetAndShowDefaultStyle(current);
+ }
return true;
}
// attributes are applied.
wxTextAttr attr(GetStyleSheet() ? def->GetStyleMergedWithBase(GetStyleSheet()) : def->GetStyle());
- int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE;
+ int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE|wxRICHTEXT_SETSTYLE_RESET;
if (def->IsKindOf(CLASSINFO(wxRichTextListStyleDefinition)))
{
return SetStyleEx(GetSelectionRange(), attr, flags);
else
{
- SetAndShowDefaultStyle(attr);
+ wxRichTextAttr current = GetDefaultStyleEx();
+ current.Apply(attr);
+ SetAndShowDefaultStyle(current);
return true;
}
}