]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/PlatWX.cpp
estimate size of multiline text controls more accurately (bug 873277)
[wxWidgets.git] / src / stc / PlatWX.cpp
index 859d11ce9aba8767013670ae0806bcbcf44a2139..39569116f9d6938171f98bd4c51d8145b5fcbb7f 100644 (file)
@@ -675,6 +675,7 @@ void Window::SetCursor(Cursor curs) {
         break;
     case cursorHand:
         cursorId = wxCURSOR_HAND;
+        break;
     default:
         cursorId = wxCURSOR_ARROW;
         break;
@@ -697,7 +698,7 @@ void Window::SetTitle(const char *s) {
 // Helper classes for ListBox
 
 
-// This is a simple subclass of wxLIstView that just resets focus to the
+// This is a simple subclass of wxListView that just resets focus to the
 // parent when it gets it.
 class wxSTCListBox : public wxListView {
 public:
@@ -712,12 +713,17 @@ public:
         event.Skip();
     }
 
+    void OnKillFocus(wxFocusEvent& WXUNUSED(event)) {
+        // Do nothing.  Prevents base class from resetting the colors...
+    }
+
 private:
     DECLARE_EVENT_TABLE()
 };
 
 BEGIN_EVENT_TABLE(wxSTCListBox, wxListView)
     EVT_SET_FOCUS( wxSTCListBox::OnFocus)
+    EVT_KILL_FOCUS(wxSTCListBox::OnKillFocus)
 END_EVENT_TABLE()
 
 
@@ -740,9 +746,26 @@ public:
         lv->SetCursor(wxCursor(wxCURSOR_ARROW));
         lv->InsertColumn(0, wxEmptyString);
         lv->InsertColumn(1, wxEmptyString);
+
+        // Eventhough we immediately reset the focus to the parent, this helps
+        // things to look right...
+        lv->SetFocus();
+
         Hide();
     }
 
+        
+    // On OSX and (possibly others) there can still be pending
+    // messages/events for the list control when Scintilla wants to
+    // close it, so do a pending delete of it instead of destroying
+    // immediately.
+    bool Destroy() {
+        if ( !wxPendingDelete.Member(this) )
+            wxPendingDelete.Append(this);
+        return TRUE;
+    }
+
+    
     int IconWidth() {
         wxImageList* il = lv->GetImageList(wxIMAGE_LIST_SMALL);
         if (il != NULL) {
@@ -776,7 +799,7 @@ public:
         event.Skip();
     }
 
-    void OnActivate(wxListEvent& event) {
+    void OnActivate(wxListEvent& WXUNUSED(event)) {
         doubleClickAction(doubleClickActionData);
     }
 
@@ -832,7 +855,6 @@ public:
     virtual int GetSelection();
     virtual int Find(const char *prefix);
     virtual void GetValue(int n, char *value, int len);
-    virtual void Sort();
     virtual void RegisterImage(int type, const char *xpm_data);
     virtual void ClearRegisteredImages();
     virtual void SetDoubleClickAction(CallBackAction, void *);
@@ -888,7 +910,7 @@ PRectangle ListBoxImpl::GetDesiredRect() {
     // wxListCtrl doesn't have a DoGetBestSize, so instead we kept track of
     // the max size in Append and calculate it here...
     int maxw = maxStrWidth;
-    int maxh = 0;
+    int maxh ;
 
     // give it a default if there are no lines, and/or add a bit more
     if (maxw == 0) maxw = 100;
@@ -985,9 +1007,6 @@ void ListBoxImpl::GetValue(int n, char *value, int len) {
     value[len-1] = '\0';
 }
 
-void ListBoxImpl::Sort() {
-}
-
 
 void ListBoxImpl::RegisterImage(int type, const char *xpm_data) {
     wxMemoryInputStream stream(xpm_data, strlen(xpm_data)+1);