EVT_SIZE(wxRichTextCtrl::OnSize)
EVT_SET_FOCUS(wxRichTextCtrl::OnSetFocus)
EVT_KILL_FOCUS(wxRichTextCtrl::OnKillFocus)
+ EVT_MOUSE_CAPTURE_LOST(wxRichTextCtrl::OnCaptureLost)
EVT_CONTEXT_MENU(wxRichTextCtrl::OnContextMenu)
EVT_MENU(wxID_UNDO, wxRichTextCtrl::OnUndo)
// Refresh(false);
}
+void wxRichTextCtrl::OnCaptureLost(wxMouseCaptureLostEvent& WXUNUSED(event))
+{
+ m_dragging = false;
+}
+
/// Left-click
void wxRichTextCtrl::OnLeftClick(wxMouseEvent& event)
{
// See if we need to change the cursor
{
- if (hit != wxRICHTEXT_HITTEST_NONE)
+ if (hit != wxRICHTEXT_HITTEST_NONE & !(hit & wxRICHTEXT_HITTEST_OUTSIDE))
{
wxTextAttrEx attr;
if (GetStyle(position, attr))
}
}
}
+ else
+ SetCursor(m_textCursor);
}
if (!event.Dragging())
// we want to be at the end of the last line but with m_caretAtLineStart set to true,
// so we view the caret at the start of the line.
bool caretLineStart = false;
- if (hitTest == wxRICHTEXT_HITTEST_BEFORE)
+ if (hitTest & wxRICHTEXT_HITTEST_BEFORE)
{
wxRichTextLine* thisLine = GetBuffer().GetLineAtPosition(newPos-1);
wxRichTextRange lineRange;
int hit = ((wxRichTextCtrl*)this)->GetBuffer().HitTest(dc, pt2, *pos);
- switch ( hit )
- {
- case wxRICHTEXT_HITTEST_BEFORE:
- return wxTE_HT_BEFORE;
-
- case wxRICHTEXT_HITTEST_AFTER:
- return wxTE_HT_BEYOND;
-
- case wxRICHTEXT_HITTEST_ON:
- return wxTE_HT_ON_TEXT;
- }
+ if ((hit & wxRICHTEXT_HITTEST_BEFORE) && (hit & wxRICHTEXT_HITTEST_OUTSIDE))
+ return wxTE_HT_BEFORE;
+ else if ((hit & wxRICHTEXT_HITTEST_AFTER) && (hit & wxRICHTEXT_HITTEST_OUTSIDE))
+ return wxTE_HT_BEYOND;
+ else if (hit & wxRICHTEXT_HITTEST_BEFORE|wxRICHTEXT_HITTEST_AFTER)
+ return wxTE_HT_ON_TEXT;
+ else
+ return wxTE_HT_UNKNOWN;
return wxTE_HT_UNKNOWN;
}