]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/spinctrl.cpp
fixed typo in library name
[wxWidgets.git] / src / msw / spinctrl.cpp
index b06ff27e385b5be01003d16f5d76df2f4fca6a68..8cbf378f111db401346aede4c23b38d0de4cbf9e 100644 (file)
@@ -85,9 +85,12 @@ LRESULT APIENTRY _EXPORT wxBuddyTextWndProc(HWND hwnd,
 {
     wxSpinCtrl *spin = (wxSpinCtrl *)::GetWindowLong(hwnd, GWL_USERDATA);
 
 {
     wxSpinCtrl *spin = (wxSpinCtrl *)::GetWindowLong(hwnd, GWL_USERDATA);
 
-    // forward some messages (the key ones only so far) to the spin ctrl
+    // forward some messages (the key and focus ones only so far) to
+    // the spin ctrl
     switch ( message )
     {
     switch ( message )
     {
+        case WM_SETFOCUS:
+        case WM_KILLFOCUS:
         case WM_CHAR:
         case WM_DEADCHAR:
         case WM_KEYUP:
         case WM_CHAR:
         case WM_DEADCHAR:
         case WM_KEYUP:
@@ -159,7 +162,7 @@ bool wxSpinCtrl::ProcessTextCommand(WXWORD cmd, WXWORD WXUNUSED(id))
 
 void wxSpinCtrl::OnChar(wxKeyEvent& event)
 {
 
 void wxSpinCtrl::OnChar(wxKeyEvent& event)
 {
-    switch ( event.KeyCode() )
+    switch ( event.GetKeyCode() )
     {
         case WXK_RETURN:
             {
     {
         case WXK_RETURN:
             {
@@ -211,6 +214,10 @@ bool wxSpinCtrl::Create(wxWindow *parent,
     // know whether this is a horizontal or vertical control (we're always
     // vertical)
     style |= wxSP_VERTICAL;
     // know whether this is a horizontal or vertical control (we're always
     // vertical)
     style |= wxSP_VERTICAL;
+
+    if ( (style & wxBORDER_MASK) == wxBORDER_DEFAULT )
+        style |= wxBORDER_SUNKEN;
+
     SetWindowStyle(style);
 
     // calculate the sizes: the size given is the toal size for both controls
     SetWindowStyle(style);
 
     // calculate the sizes: the size given is the toal size for both controls
@@ -317,6 +324,10 @@ wxSpinCtrl::~wxSpinCtrl()
 {
     ms_allSpins.Remove(this);
 
 {
     ms_allSpins.Remove(this);
 
+    // This removes spurious memory leak reporting
+    if (ms_allSpins.GetCount() == 0)
+        ms_allSpins.Clear();
+
     // destroy the buddy window because this pointer which wxBuddyTextWndProc
     // uses will not soon be valid any more
     ::DestroyWindow(GetBuddyHwnd());
     // destroy the buddy window because this pointer which wxBuddyTextWndProc
     // uses will not soon be valid any more
     ::DestroyWindow(GetBuddyHwnd());
@@ -345,6 +356,18 @@ int wxSpinCtrl::GetValue() const
     return n;
 }
 
     return n;
 }
 
+void wxSpinCtrl::SetSelection(long from, long to)
+{
+    // if from and to are both -1, it means (in wxWindows) that all text should
+    // be selected - translate into Windows convention
+    if ( (from == -1) && (to == -1) )
+    {
+        from = 0;
+    }
+
+    ::SendMessage((HWND)m_hwndBuddy, EM_SETSEL, (WPARAM)from, (LPARAM)to);
+}
+
 // ----------------------------------------------------------------------------
 // forward some methods to subcontrols
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // forward some methods to subcontrols
 // ----------------------------------------------------------------------------