]> git.saurik.com Git - wxWidgets.git/commitdiff
Another attempt to handle key events correctly for wxSTC
authorRobin Dunn <robin@alldunn.com>
Wed, 17 Oct 2001 05:29:09 +0000 (05:29 +0000)
committerRobin Dunn <robin@alldunn.com>
Wed, 17 Oct 2001 05:29:09 +0000 (05:29 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12037 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

contrib/src/stc/PlatWX.cpp
contrib/src/stc/ScintillaWX.cpp
contrib/src/stc/stc.cpp
contrib/src/stc/stc.cpp.in
src/stc/PlatWX.cpp
src/stc/ScintillaWX.cpp
src/stc/stc.cpp
src/stc/stc.cpp.in

index ae53b19b54a3822976b6945faaaf13c0cedb25cf..0e7390741484ce8e61b0d2123c91f9db2edc4a95 100644 (file)
@@ -456,7 +456,7 @@ class wxSTCListBox : public wxListBox {
 public:
     wxSTCListBox(wxWindow* parent, wxWindowID id)
         : wxListBox(parent, id, wxDefaultPosition, wxDefaultSize,
-                    0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER)
+                    0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER | wxLB_SORT )
         {}
 
     void OnFocus(wxFocusEvent& event) {
@@ -464,7 +464,7 @@ public:
         event.Skip();
     }
 
-#ifdef __WXGTK__
+#if 0 // #ifdef __WXGTK__
     void DoSetFirstItem(int n);
 #endif
 
@@ -479,7 +479,7 @@ END_EVENT_TABLE()
 
 
 
-#ifdef __WXGTK__
+#if 0 // #ifdef __WXGTK__
     // This can be removed after 2.2.2 I think
 void wxSTCListBox::DoSetFirstItem( int n )
 {
@@ -535,15 +535,21 @@ void ListBox::Create(Window &parent, int ctrlID) {
 //                       0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER);
 }
 
+void ListBox::SetVisibleRows(int rows) {
+       desiredVisibleRows = rows;
+        printf("SetVisibleRows: %d\n", rows);
+}
+
 PRectangle ListBox::GetDesiredRect() {
     wxSize sz = ((wxListBox*)id)->GetBestSize();
+    printf("GetDesiredRect: %d, %d\n", sz.x, sz.y);
     PRectangle rc;
     rc.top = 0;
     rc.left = 0;
-    if (sz.x > 150)   // TODO: A better way to determine these max sizes
-        sz.x = 150;
-    if (sz.y > 100)
-        sz.y = 100;
+    if (sz.x > 400)
+        sz.x = 400;
+    if (sz.y > 150)
+        sz.y = 150;
     rc.right = sz.x;
     rc.bottom = sz.y;
 
index cfa59ede1e78030236465bbf49bad48cfa8d9451..103ce927962f45cb8b23b8421579be49116221ea 100644 (file)
@@ -421,10 +421,7 @@ void ScintillaWX::DoButtonMove(Point pt) {
 
 
 void ScintillaWX::DoAddChar(char ch) {
-    //bool acActiveBeforeCharAdded = ac.Active();
     AddChar(ch);
-    //if (acActiveBeforeCharAdded)
-    //    AutoCompleteChanged(ch);
 }
 
 int  ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* consumed) {
@@ -466,9 +463,6 @@ int  ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* cons
 
     int rv = KeyDown(key, shift, ctrl, alt, consumed);
 
-//      printf("key: %d  shift: %d  ctrl: %d  alt: %d  rv: %d  consumed: %d\n",
-//             key, shift, ctrl, alt, rv, *consumed);
-
     if (key)
         return rv;
     else
index 711ff34390276d716a03326352a130f321decabf..bd6184cf6a33dbb5e7dc11a47f9851cafa7cfc3e 100644 (file)
@@ -1834,19 +1834,40 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) {
 
 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 && !iscntrl(key) && !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();
 }
index e4c51365a96defc6c8e5916266c4132bf4d634aa..979bca8794bd0db9ab6ebbd9b1591cd9b71726db 100644 (file)
@@ -380,19 +380,40 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) {
 
 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 && !iscntrl(key) && !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();
 }
index ae53b19b54a3822976b6945faaaf13c0cedb25cf..0e7390741484ce8e61b0d2123c91f9db2edc4a95 100644 (file)
@@ -456,7 +456,7 @@ class wxSTCListBox : public wxListBox {
 public:
     wxSTCListBox(wxWindow* parent, wxWindowID id)
         : wxListBox(parent, id, wxDefaultPosition, wxDefaultSize,
-                    0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER)
+                    0, NULL, wxLB_SINGLE | wxSIMPLE_BORDER | wxLB_SORT )
         {}
 
     void OnFocus(wxFocusEvent& event) {
@@ -464,7 +464,7 @@ public:
         event.Skip();
     }
 
-#ifdef __WXGTK__
+#if 0 // #ifdef __WXGTK__
     void DoSetFirstItem(int n);
 #endif
 
@@ -479,7 +479,7 @@ END_EVENT_TABLE()
 
 
 
-#ifdef __WXGTK__
+#if 0 // #ifdef __WXGTK__
     // This can be removed after 2.2.2 I think
 void wxSTCListBox::DoSetFirstItem( int n )
 {
@@ -535,15 +535,21 @@ void ListBox::Create(Window &parent, int ctrlID) {
 //                       0, NULL, wxLB_SINGLE | wxLB_SORT | wxSIMPLE_BORDER);
 }
 
+void ListBox::SetVisibleRows(int rows) {
+       desiredVisibleRows = rows;
+        printf("SetVisibleRows: %d\n", rows);
+}
+
 PRectangle ListBox::GetDesiredRect() {
     wxSize sz = ((wxListBox*)id)->GetBestSize();
+    printf("GetDesiredRect: %d, %d\n", sz.x, sz.y);
     PRectangle rc;
     rc.top = 0;
     rc.left = 0;
-    if (sz.x > 150)   // TODO: A better way to determine these max sizes
-        sz.x = 150;
-    if (sz.y > 100)
-        sz.y = 100;
+    if (sz.x > 400)
+        sz.x = 400;
+    if (sz.y > 150)
+        sz.y = 150;
     rc.right = sz.x;
     rc.bottom = sz.y;
 
index cfa59ede1e78030236465bbf49bad48cfa8d9451..103ce927962f45cb8b23b8421579be49116221ea 100644 (file)
@@ -421,10 +421,7 @@ void ScintillaWX::DoButtonMove(Point pt) {
 
 
 void ScintillaWX::DoAddChar(char ch) {
-    //bool acActiveBeforeCharAdded = ac.Active();
     AddChar(ch);
-    //if (acActiveBeforeCharAdded)
-    //    AutoCompleteChanged(ch);
 }
 
 int  ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* consumed) {
@@ -466,9 +463,6 @@ int  ScintillaWX::DoKeyDown(int key, bool shift, bool ctrl, bool alt, bool* cons
 
     int rv = KeyDown(key, shift, ctrl, alt, consumed);
 
-//      printf("key: %d  shift: %d  ctrl: %d  alt: %d  rv: %d  consumed: %d\n",
-//             key, shift, ctrl, alt, rv, *consumed);
-
     if (key)
         return rv;
     else
index 711ff34390276d716a03326352a130f321decabf..bd6184cf6a33dbb5e7dc11a47f9851cafa7cfc3e 100644 (file)
@@ -1834,19 +1834,40 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) {
 
 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 && !iscntrl(key) && !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();
 }
index e4c51365a96defc6c8e5916266c4132bf4d634aa..979bca8794bd0db9ab6ebbd9b1591cd9b71726db 100644 (file)
@@ -380,19 +380,40 @@ void wxStyledTextCtrl::OnMouseWheel(wxMouseEvent& evt) {
 
 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 && !iscntrl(key) && !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();
 }