EVT_SCROLL (wxStyledTextCtrl::OnScroll)
EVT_SIZE (wxStyledTextCtrl::OnSize)
EVT_LEFT_DOWN (wxStyledTextCtrl::OnMouseLeftDown)
-#if defined(__WXMSW__) || defined(__WXMAC__)
// Let Scintilla see the double click as a second click
EVT_LEFT_DCLICK (wxStyledTextCtrl::OnMouseLeftDown)
-#endif
EVT_MOTION (wxStyledTextCtrl::OnMouseMove)
EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp)
#if defined(__WXGTK__) || defined(__WXMAC__)
EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu)
#endif
EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel)
+ EVT_MIDDLE_UP (wxStyledTextCtrl::OnMouseMiddleUp)
EVT_CHAR (wxStyledTextCtrl::OnChar)
EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown)
EVT_KILL_FOCUS (wxStyledTextCtrl::OnLoseFocus)
return wxColourFromLong(c);
}
+// Set the foreground colour of all whitespace and whether to use this setting.
+void wxStyledTextCtrl::SetWhitespaceForeground(bool useSetting, const wxColour& fore) {
+ SendMsg(2084, useSetting, wxColourAsLong(fore));
+}
+
+// Set the background colour of all whitespace and whether to use this setting.
+void wxStyledTextCtrl::SetWhitespaceBackground(bool useSetting, const wxColour& back) {
+ SendMsg(2085, useSetting, wxColourAsLong(back));
+}
+
// Divide each styling byte into lexical class bits (default: 5) and indicator
// bits (default: 3). If a lexer requires more than 32 lexical states, then this
// is used to expand the possible states.
return SendMsg(2279, line, 0);
}
+// Move caret to first position on display line.
+void wxStyledTextCtrl::HomeDisplay() {
+ SendMsg(2345, 0, 0);
+}
+
+// Move caret to first position on display line extending selection to
+// new caret position.
+void wxStyledTextCtrl::HomeDisplayExtend() {
+ SendMsg(2346, 0, 0);
+}
+
+// Move caret to last position on display line.
+void wxStyledTextCtrl::LineEndDisplay() {
+ SendMsg(2347, 0, 0);
+}
+
+// Move caret to last position on display line extending selection to new
+// caret position.
+void wxStyledTextCtrl::LineEndDisplayExtend() {
+ SendMsg(2348, 0, 0);
+}
+
// Move the caret inside current view if it's not there already.
void wxStyledTextCtrl::MoveCaretInsideView() {
SendMsg(2401, 0, 0);
void wxStyledTextCtrl::OnMouseLeftDown(wxMouseEvent& evt) {
SetFocus();
wxPoint pt = evt.GetPosition();
- m_swx->DoButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(),
+ m_swx->DoLeftButtonDown(Point(pt.x, pt.y), m_stopWatch.Time(),
evt.ShiftDown(), evt.ControlDown(), evt.AltDown());
}
void wxStyledTextCtrl::OnMouseMove(wxMouseEvent& evt) {
wxPoint pt = evt.GetPosition();
- m_swx->DoButtonMove(Point(pt.x, pt.y));
+ m_swx->DoLeftButtonMove(Point(pt.x, pt.y));
}
void wxStyledTextCtrl::OnMouseLeftUp(wxMouseEvent& evt) {
wxPoint pt = evt.GetPosition();
- m_swx->DoButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(),
+ m_swx->DoLeftButtonUp(Point(pt.x, pt.y), m_stopWatch.Time(),
evt.ControlDown());
}
}
+void wxStyledTextCtrl::OnMouseMiddleUp(wxMouseEvent& evt) {
+ wxPoint pt = evt.GetPosition();
+ m_swx->DoMiddleButtonUp(Point(pt.x, pt.y));
+}
+
void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) {
wxPoint pt = evt.GetPosition();
ScreenToClient(&pt.x, &pt.y);
void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
- int key = evt.GetKeyCode();
-
// On (some?) non-US keyboards the AltGr key is required to enter some
// common characters. It comes to us as both Alt and Ctrl down so we need
// to let the char through in that case, otherwise if only ctrl or only
bool alt = evt.AltDown();
bool skip = ((ctrl || alt) && ! (ctrl && alt));
+ int key = evt.GetKeyCode();
+
// printf("OnChar key:%d consumed:%d ctrl:%d alt:%d skip:%d\n",
// key, m_lastKeyDownConsumed, ctrl, alt, skip);
- if (key <= WXK_START && /*key >= 32 &&*/ !m_lastKeyDownConsumed && !skip) {
+ if ( (key <= WXK_START || key > WXK_NUMPAD_DIVIDE) &&
+ !m_lastKeyDownConsumed && !skip) {
m_swx->DoAddChar(key);
return;
}
GetEventHandler()->ProcessEvent(evt);
}
+
+static void SetEventText(wxStyledTextEvent& evt, const char* text,
+ size_t length) {
+ if(!text) return;
+
+ // The unicode conversion MUST have a null byte to terminate the
+ // string so move it into a buffer first and give it one.
+ wxMemoryBuffer buf(length+1);
+ buf.AppendData((void*)text, length);
+ buf.AppendByte(0);
+ evt.SetText(stc2wx(buf));
+}
+
+
void wxStyledTextCtrl::NotifyParent(SCNotification* _scn) {
SCNotification& scn = *_scn;
wxStyledTextEvent evt(0, GetId());
case SCN_MODIFIED:
evt.SetEventType(wxEVT_STC_MODIFIED);
evt.SetModificationType(scn.modificationType);
- if (scn.text) {
- // The unicode conversion MUST have a null byte to terminate the
- // string so move it into a buffer first and give it one.
- wxMemoryBuffer buf(scn.length+1);
- buf.AppendData((void*)scn.text, scn.length);
- buf.AppendByte(0);
- evt.SetText(stc2wx(buf));
- }
+ SetEventText(evt, scn.text, scn.length);
evt.SetLength(scn.length);
evt.SetLinesAdded(scn.linesAdded);
evt.SetLine(scn.line);
case SCN_USERLISTSELECTION:
evt.SetEventType(wxEVT_STC_USERLISTSELECTION);
evt.SetListType(scn.listType);
- evt.SetText(scn.text);
+ SetEventText(evt, scn.text, strlen(scn.text));
break;
case SCN_URIDROPPED:
evt.SetEventType(wxEVT_STC_URIDROPPED);
- evt.SetText(scn.text);
+ SetEventText(evt, scn.text, strlen(scn.text));
break;
case SCN_DWELLSTART: