extern LexerModule lmAVE;
extern LexerModule lmConf;
extern LexerModule lmCPP;
+ extern LexerModule lmNncrontab;
extern LexerModule lmEiffel;
extern LexerModule lmHTML;
extern LexerModule lmLISP;
&& &lmAVE
&& &lmConf
&& &lmCPP
+ && &lmNncrontab
&& &lmEiffel
&& &lmHTML
&& &lmLISP
DEFINE_EVENT_TYPE( wxEVT_STC_URIDROPPED )
DEFINE_EVENT_TYPE( wxEVT_STC_DWELLSTART )
DEFINE_EVENT_TYPE( wxEVT_STC_DWELLEND )
-
-
+#if wxUSE_DRAG_AND_DROP
+DEFINE_EVENT_TYPE( wxEVT_STC_START_DRAG )
+DEFINE_EVENT_TYPE( wxEVT_STC_DRAG_OVER )
+DEFINE_EVENT_TYPE( wxEVT_STC_DO_DROP )
+#endif
BEGIN_EVENT_TABLE(wxStyledTextCtrl, wxControl)
EVT_PAINT (wxStyledTextCtrl::OnPaint)
EVT_SCROLLWIN (wxStyledTextCtrl::OnScrollWin)
+ EVT_SCROLL (wxStyledTextCtrl::OnScroll)
EVT_SIZE (wxStyledTextCtrl::OnSize)
EVT_LEFT_DOWN (wxStyledTextCtrl::OnMouseLeftDown)
#ifdef __WXMSW__
#endif
EVT_MOTION (wxStyledTextCtrl::OnMouseMove)
EVT_LEFT_UP (wxStyledTextCtrl::OnMouseLeftUp)
+#ifdef __WXGTK__
+ EVT_RIGHT_UP (wxStyledTextCtrl::OnMouseRightUp)
+#else
EVT_CONTEXT_MENU (wxStyledTextCtrl::OnContextMenu)
+#endif
EVT_MOUSEWHEEL (wxStyledTextCtrl::OnMouseWheel)
EVT_CHAR (wxStyledTextCtrl::OnChar)
EVT_KEY_DOWN (wxStyledTextCtrl::OnKeyDown)
m_swx = new ScintillaWX(this);
m_stopWatch.Start();
m_lastKeyDownConsumed = FALSE;
+ m_vScrollBar = NULL;
+ m_hScrollBar = NULL;
}
m_swx->DoVScroll(evt.GetEventType(), evt.GetPosition());
}
+void wxStyledTextCtrl::OnScroll(wxScrollEvent& evt) {
+ wxScrollBar* sb = wxDynamicCast(evt.GetEventObject(), wxScrollBar);
+ if (sb) {
+ if (sb->IsVertical())
+ m_swx->DoVScroll(evt.GetEventType(), evt.GetPosition());
+ else
+ m_swx->DoHScroll(evt.GetEventType(), evt.GetPosition());
+ }
+}
+
void wxStyledTextCtrl::OnSize(wxSizeEvent& evt) {
wxSize sz = GetClientSize();
m_swx->DoSize(sz.x, sz.y);
}
+void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
+ wxPoint pt = evt.GetPosition();
+ m_swx->DoContextMenu(Point(pt.x, pt.y));
+}
+
+
void wxStyledTextCtrl::OnContextMenu(wxContextMenuEvent& evt) {
wxPoint pt = evt.GetPosition();
ScreenToClient(&pt.x, &pt.y);
void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
long key = evt.KeyCode();
- if (key <= 0xff && !iscntrl(key) && !m_lastKeyDownConsumed) {
+
+// printf("OnChar key:%%d consumed:%%d ctrl:%%d alt:%%d\n",
+// key, m_lastKeyDownConsumed, evt.ControlDown(), evt.AltDown());
+
+ // AltGr keys???
+ // \|@#¬[]{}?£$~ ã,õ,Ã,Õ, ñ, Ñ
+
+ // 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
+ // alt let's skip it.
+ bool ctrl = evt.ControlDown();
+ bool alt = evt.AltDown();
+ bool skip = ((ctrl || alt) && ! (ctrl && alt));
+
+ if (key <= 0xff && key >= 32 && !m_lastKeyDownConsumed && !skip) {
m_swx->DoAddChar(key);
+ return;
}
+ evt.Skip();
}
void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
long key = evt.KeyCode();
- int processed = m_swx->DoKeyDown(key,
- evt.ShiftDown(),
- evt.ControlDown(),
- evt.AltDown(),
- &m_lastKeyDownConsumed);
+ bool shift = evt.ShiftDown(),
+ ctrl = evt.ControlDown(),
+ alt = evt.AltDown();
+
+ int processed = m_swx->DoKeyDown(key, shift, ctrl, alt, &m_lastKeyDownConsumed);
+
+// printf("key: %%d shift: %%d ctrl: %%d alt: %%d processed: %%d consumed: %%d\n",
+// key, shift, ctrl, alt, processed, m_lastKeyDownConsumed);
+
if (!processed && !m_lastKeyDownConsumed)
evt.Skip();
}
void wxStyledTextCtrl::NotifyChange() {
wxStyledTextEvent evt(wxEVT_STC_CHANGE, GetId());
+ evt.SetEventObject(this);
GetEventHandler()->ProcessEvent(evt);
}
SCNotification& scn = *_scn;
wxStyledTextEvent evt(0, GetId());
+ evt.SetEventObject(this);
evt.SetPosition(scn.position);
evt.SetKey(scn.ch);
evt.SetModifiers(scn.modifiers);
}
-
//----------------------------------------------------------------------
//----------------------------------------------------------------------
//----------------------------------------------------------------------
m_listType = 0;
m_x = 0;
m_y = 0;
+#if wxUSE_DRAG_AND_DROP
+ m_dragAllowMove = FALSE;
+ m_dragResult = wxDragNone;
+#endif
}
bool wxStyledTextEvent::GetShift() const { return (m_modifiers & SCI_SHIFT) != 0; }
bool wxStyledTextEvent::GetControl() const { return (m_modifiers & SCI_CTRL) != 0; }
bool wxStyledTextEvent::GetAlt() const { return (m_modifiers & SCI_ALT) != 0; }
-void wxStyledTextEvent::CopyObject(wxObject& obj) const {
- wxCommandEvent::CopyObject(obj);
- wxStyledTextEvent* o = (wxStyledTextEvent*)&obj;
- o->m_position = m_position;
- o->m_key = m_key;
- o->m_modifiers = m_modifiers;
- o->m_modificationType = m_modificationType;
- o->m_text = m_text;
- o->m_length = m_length;
- o->m_linesAdded = m_linesAdded;
- o->m_line = m_line;
- o->m_foldLevelNow = m_foldLevelNow;
- o->m_foldLevelPrev = m_foldLevelPrev;
+wxStyledTextEvent::wxStyledTextEvent(const wxStyledTextEvent& event):
+ wxCommandEvent(event)
+{
+ m_position = event.m_position;
+ m_key = event.m_key;
+ m_modifiers = event.m_modifiers;
+ m_modificationType = event.m_modificationType;
+ m_text = event.m_text;
+ m_length = event.m_length;
+ m_linesAdded = event.m_linesAdded;
+ m_line = event.m_line;
+ m_foldLevelNow = event.m_foldLevelNow;
+ m_foldLevelPrev = event.m_foldLevelPrev;
+
+ m_margin = event.m_margin;
+
+ m_message = event.m_message;
+ m_wParam = event.m_wParam;
+ m_lParam = event.m_lParam;
+
+ m_listType = event.m_listType;
+ m_x = event.m_x;
+ m_y = event.m_y;
+
+#if wxUSE_DRAG_AND_DROP
+ m_dragText = event.m_dragText;
+ m_dragAllowMove =event.m_dragAllowMove;
+ m_dragResult = event.m_dragResult;
+#endif
+}
+
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+
+
+
- o->m_margin = m_margin;
- o->m_message = m_message;
- o->m_wParam = m_wParam;
- o->m_lParam = m_lParam;
- o->m_listType = m_listType;
- o->m_x = m_x;
- o->m_y = m_y;
-}
-//----------------------------------------------------------------------
-//----------------------------------------------------------------------