]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/spinctlg.cpp
Handle image hot spot in wxImage::Rotate180().
[wxWidgets.git] / src / generic / spinctlg.cpp
index d0304875436f5884e4edb4f3ca3ca98d1a0dff02..d3c1cdb4a6d2d82dc25832b54dfc36ca3f266a9d 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     29.01.01
 // RCS-ID:      $Id$
 // Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// License:     wxWindows licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -248,8 +248,7 @@ wxSpinCtrlGenericBase::~wxSpinCtrlGenericBase()
         delete text;
     }
 
-    delete m_spinButton;
-    m_spinButton = NULL;
+    wxDELETE(m_spinButton);
 }
 
 // ----------------------------------------------------------------------------
@@ -280,11 +279,22 @@ void wxSpinCtrlGenericBase::DoMoveWindow(int x, int y, int width, int height)
 // operations forwarded to the subcontrols
 // ----------------------------------------------------------------------------
 
+void wxSpinCtrlGenericBase::SetFocus()
+{
+    if ( m_textCtrl )
+        m_textCtrl->SetFocus();
+}
+
 bool wxSpinCtrlGenericBase::Enable(bool enable)
 {
-    if ( !wxControl::Enable(enable) )
+    // Notice that we never enable this control itself, it must stay disabled
+    // to avoid interfering with the siblings event handling (see e.g. #12045
+    // for the kind of problems which arise otherwise).
+    if ( enable == m_isEnabled )
         return false;
 
+    m_isEnabled = enable;
+
     m_spinButton->Enable(enable);
     m_textCtrl->Enable(enable);
 
@@ -557,6 +567,11 @@ void wxSpinCtrlDouble::SetDigits(unsigned digits)
 {
     wxCHECK_RET( digits <= 20, "too many digits for wxSpinCtrlDouble" );
 
+    if ( digits == m_digits )
+        return;
+
+    m_digits = digits;
+
     m_format.Printf(wxT("%%0.%ulf"), digits);
 
     DoSetValue(m_value);