]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/choice.cpp
Avoid an assert in wxFrame::SetTitle
[wxWidgets.git] / src / msw / choice.cpp
index e75bef72bdde0d126c399332f11d8780a76dd20f..9abbe7e00f452ffe7329d75f1db5336546d527e8 100644 (file)
@@ -179,8 +179,9 @@ bool wxChoice::MSWShouldPreProcessMessage(WXMSG *pMsg)
 {
     MSG *msg = (MSG *) pMsg;
 
 {
     MSG *msg = (MSG *) pMsg;
 
-    // don't preprocess "ESC" if combobox is dropped down
-    if ( msg->message == WM_KEYDOWN && msg->wParam == VK_ESCAPE )
+    // if the dropdown list is visible, don't preprocess certain keys
+    if ( msg->message == WM_KEYDOWN
+        && (msg->wParam == VK_ESCAPE || msg->wParam == VK_RETURN) )
     {
         if (::SendMessage(GetHwndOf(this), CB_GETDROPPEDSTATE, 0, 0))
         {
     {
         if (::SendMessage(GetHwndOf(this), CB_GETDROPPEDSTATE, 0, 0))
         {
@@ -457,7 +458,7 @@ void wxChoice::DoGetSize(int *w, int *h) const
     // total height of the control including the drop down list -- but only
     // sometimes, and normally it isn't... I have no idea about what to do with
     // this
     // total height of the control including the drop down list -- but only
     // sometimes, and normally it isn't... I have no idea about what to do with
     // this
-    wxControl::DoGetSize(w, h);
+    wxControl::DoGetSize(w, h);    
 }
 
 void wxChoice::DoSetSize(int x, int y,
 }
 
 void wxChoice::DoSetSize(int x, int y,
@@ -476,8 +477,8 @@ void wxChoice::DoSetSize(int x, int y,
         size_t nItems = GetCount();
         if ( !nItems )
             nItems = 9;
         size_t nItems = GetCount();
         if ( !nItems )
             nItems = 9;
-        else if ( nItems > 39 )
-            nItems = 39;
+        else if ( nItems > 24 )
+            nItems = 24;
 
         // add space for the drop down list
         const int hItem = SendMessage(GetHwnd(), CB_GETITEMHEIGHT, 0, 0);
 
         // add space for the drop down list
         const int hItem = SendMessage(GetHwnd(), CB_GETITEMHEIGHT, 0, 0);
@@ -486,6 +487,11 @@ void wxChoice::DoSetSize(int x, int y,
 
     wxControl::DoSetSize(x, y, width, height, sizeFlags);
 
 
     wxControl::DoSetSize(x, y, width, height, sizeFlags);
 
+    // I'm commenting this out since the code appears to make choices
+    // and comboxes too high when they have associated sizers. I'm sure this
+    // is not the end of the story, which is why I'm leaving it #if'ed out for
+    // now. JACS.
+#if 0
     // if the height specified for the visible part of the control is
     // different from the current one, we need to change it separately
     // as it is not affected by normal WM_SETSIZE
     // if the height specified for the visible part of the control is
     // different from the current one, we need to change it separately
     // as it is not affected by normal WM_SETSIZE
@@ -498,6 +504,9 @@ void wxChoice::DoSetSize(int x, int y,
             SendMessage(GetHwnd(), CB_SETITEMHEIGHT, (WPARAM)-1, h + delta);
         }
     }
             SendMessage(GetHwnd(), CB_SETITEMHEIGHT, (WPARAM)-1, h + delta);
         }
     }
+#else
+    wxUnusedVar(heightOrig);
+#endif
 }
 
 wxSize wxChoice::DoGetBestSize() const
 }
 
 wxSize wxChoice::DoGetBestSize() const