]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/combobox.cpp
fixes for Raise() to work correctly with both top level and child windows
[wxWidgets.git] / src / msw / combobox.cpp
index c66b9eb9061110c57c49826978785a675ea93a6e..c5368a57d1d3bbc753c99dca88ac1cf640a9f465 100644 (file)
@@ -41,7 +41,7 @@
 #include "wx/msw/private.h"
 
 #if wxUSE_TOOLTIPS
-    #ifndef __GNUWIN32_OLD__
+    #if !defined(__GNUWIN32_OLD__) || defined(__CYGWIN10__)
         #include <commctrl.h>
     #endif
     #include "wx/tooltip.h"
@@ -115,7 +115,7 @@ LRESULT APIENTRY _EXPORT wxComboEditWndProc(HWND hWnd,
 #endif // 0
 
         // deal with tooltips here
-#if wxUSE_TOOLTIPS
+#if wxUSE_TOOLTIPS && defined(TTN_NEEDTEXT)
         case WM_NOTIFY:
             {
                 wxCHECK_MSG( win, 0, _T("should have a parent") );
@@ -190,7 +190,7 @@ bool wxComboBox::MSWProcessEditMsg(WXUINT msg, WXWPARAM wParam, WXLPARAM lParam)
     {
         case WM_CHAR:
             return HandleChar(wParam, lParam, TRUE /* isASCII */);
-                       
+
         case WM_KEYDOWN:
             return HandleKeyDown(wParam, lParam);
 
@@ -230,11 +230,13 @@ bool wxComboBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
 
         case CBN_EDITCHANGE:
             {
+                wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, GetId());
                 // if sel != -1, value was initialized above (and we can't use
                 // GetValue() here as it would return the old selection and we
                 // want the new one)
-                wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, GetId());
-                event.SetString(sel == -1 ? GetValue() : value);
+                if ( sel == -1 )
+                    value = GetValue();
+                event.SetString(value);
                 event.SetEventObject(this);
                 ProcessCommand(event);
             }
@@ -487,49 +489,6 @@ void wxComboBox::SetSelection(long from, long to)
     }
 }
 
-void wxComboBox::DoMoveWindow(int x, int y, int width, int height)
-{
-    // here is why this is necessary: if the width is negative, the combobox
-    // window proc makes the window of the size width*height instead of
-    // interpreting height in the usual manner (meaning the height of the drop
-    // down list - usually the height specified in the call to MoveWindow()
-    // will not change the height of combo box per se)
-    //
-    // this behaviour is not documented anywhere, but this is just how it is
-    // here (NT 4.4) and, anyhow, the check shouldn't hurt - however without
-    // the check, constraints/sizers using combos may break the height
-    // constraint will have not at all the same value as expected
-    if ( width < 0 )
-        return;
-
-    int cx, cy;
-    wxGetCharSize(GetHWND(), &cx, &cy, &GetFont());
-
-    // what should the height of the drop down list be? we choose 10 items by
-    // default and also 10 items max (if we always use n, the list will never
-    // have vertical scrollbar)
-    int n = GetCount();
-    if ( !n || (n > 10) )
-        n = 10;
-
-    height = (n + 1)* EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);
-
-    wxControl::DoMoveWindow(x, y, width, height);
-}
-
-wxSize wxComboBox::DoGetBestSize() const
-{
-    // the choice calculates the horz size correctly, but not the vertical
-    // component: correct it
-    wxSize size = wxChoice::DoGetBestSize();
-
-    int cx, cy;
-    wxGetCharSize(GetHWND(), &cx, &cy, &GetFont());
-    size.y = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);
-
-    return size;
-}
-
 #endif
  // wxUSE_COMBOBOX