]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/combog.cpp
set anti-aliasing ON by default
[wxWidgets.git] / src / generic / combog.cpp
index 5559bff3c81f1e0d7b1707acae63df27f34231fd..5864782b95c2730728afb0380f86035dd3206675 100644 (file)
 
 
 // ----------------------------------------------------------------------------
-// wxGenericComboControl
+// wxGenericComboCtrl
 // ----------------------------------------------------------------------------
 
-BEGIN_EVENT_TABLE(wxGenericComboControl, wxComboCtrlBase)
-    EVT_PAINT(wxGenericComboControl::OnPaintEvent)
-    EVT_MOUSE_EVENTS(wxGenericComboControl::OnMouseEvent)
+BEGIN_EVENT_TABLE(wxGenericComboCtrl, wxComboCtrlBase)
+    EVT_PAINT(wxGenericComboCtrl::OnPaintEvent)
+    EVT_MOUSE_EVENTS(wxGenericComboCtrl::OnMouseEvent)
 END_EVENT_TABLE()
 
 
-IMPLEMENT_DYNAMIC_CLASS(wxGenericComboControl, wxComboCtrlBase)
+IMPLEMENT_DYNAMIC_CLASS(wxGenericComboCtrl, wxComboCtrlBase)
 
-void wxGenericComboControl::Init()
+void wxGenericComboCtrl::Init()
 {
 }
 
-bool wxGenericComboControl::Create(wxWindow *parent,
-                                   wxWindowID id,
-                                   const wxString& value,
-                                   const wxPoint& pos,
-                                   const wxSize& size,
-                                   long style,
-                                   const wxValidator& validator,
-                                   const wxString& name)
+bool wxGenericComboCtrl::Create(wxWindow *parent,
+                                wxWindowID id,
+                                const wxString& value,
+                                const wxPoint& pos,
+                                const wxSize& size,
+                                long style,
+                                const wxValidator& validator,
+                                const wxString& name)
 {
 
     // Set border
@@ -120,12 +120,12 @@ bool wxGenericComboControl::Create(wxWindow *parent,
         border = wxBORDER_SIMPLE;
 #elif defined(__WXMSW__)
         // For XP, have 1-width custom border, for older version use sunken
-        if ( wxUxThemeEngine::GetIfActive() )
+        /*if ( wxUxThemeEngine::GetIfActive() )
         {
             border = wxBORDER_NONE;
             m_widthCustomBorder = 1;
         }
-        else
+        else*/
             border = wxBORDER_SUNKEN;
 #elif defined(__WXGTK__)
         border = wxBORDER_NONE;
@@ -161,7 +161,7 @@ bool wxGenericComboControl::Create(wxWindow *parent,
     CreateTextCtrl( wxNO_BORDER, validator );
 
     // Add keyboard input handlers for main control and textctrl
-    InstallInputHandlers( true );
+    InstallInputHandlers();
 
     // Set background
     SetBackgroundStyle( wxBG_STYLE_CUSTOM ); // for double-buffering
@@ -172,11 +172,11 @@ bool wxGenericComboControl::Create(wxWindow *parent,
     return true;
 }
 
-wxGenericComboControl::~wxGenericComboControl()
+wxGenericComboCtrl::~wxGenericComboCtrl()
 {
 }
 
-void wxGenericComboControl::OnResize()
+void wxGenericComboCtrl::OnResize()
 {
 
     // Recalculates button and textctrl areas
@@ -198,7 +198,7 @@ void wxGenericComboControl::OnResize()
     PositionTextCtrl( TEXTCTRLXADJUST, TEXTCTRLYADJUST );
 }
 
-void wxGenericComboControl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
+void wxGenericComboCtrl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
 {
     wxSize sz = GetClientSize();
     wxBufferedPaintDC dc(this,GetBufferBitmap(sz));
@@ -278,17 +278,16 @@ void wxGenericComboControl::OnPaintEvent( wxPaintEvent& WXUNUSED(event) )
     }
 }
 
-void wxGenericComboControl::OnMouseEvent( wxMouseEvent& event )
+void wxGenericComboCtrl::OnMouseEvent( wxMouseEvent& event )
 {
-    bool isOnButtonArea = m_btnArea.Inside(event.m_x,event.m_y);
+    int mx = event.m_x;
+    bool isOnButtonArea = m_btnArea.Contains(mx,event.m_y);
     int handlerFlags = isOnButtonArea ? wxCC_MF_ON_BUTTON : 0;
 
-    // Preprocessing fabricates double-clicks and prevents
-    // (it may also do other common things in future)
     if ( PreprocessMouseEvent(event,handlerFlags) )
         return;
 
-    const bool ctrlIsButton = wxPlatformIs(wxMSW);
+    const bool ctrlIsButton = wxPlatformIs(wxOS_WINDOWS);
 
     if ( ctrlIsButton &&
          (m_windowStyle & (wxCC_SPECIAL_DCLICK|wxCB_READONLY)) == wxCB_READONLY )
@@ -301,8 +300,11 @@ void wxGenericComboControl::OnMouseEvent( wxMouseEvent& event )
     }
     else
     {
-        if ( isOnButtonArea || HasCapture() )
+        if ( isOnButtonArea || HasCapture() ||
+             (m_widthCustomPaint && mx < (m_tcArea.x+m_widthCustomPaint)) )
         {
+            handlerFlags |= wxCC_MF_ON_CLICK_AREA;
+
             if ( HandleButtonMouseEvent(event,handlerFlags) )
                 return;
         }
@@ -321,11 +323,33 @@ void wxGenericComboControl::OnMouseEvent( wxMouseEvent& event )
 
 }
 
+bool wxGenericComboCtrl::IsKeyPopupToggle(const wxKeyEvent& event) const
+{
+    int keycode = event.GetKeyCode();
+    bool isPopupShown = IsPopupShown();
+
+    // This code is AFAIK appropriate for wxGTK.
+
+    if ( isPopupShown )
+    {
+        if ( keycode == WXK_ESCAPE ||
+             ( keycode == WXK_UP && event.AltDown() ) )
+            return true;
+    }
+    else
+    {
+        if ( keycode == WXK_DOWN && event.AltDown() )
+            return true;
+    }
+
+    return false;
+}
+
 #ifdef __WXUNIVERSAL__
 
-bool wxGenericComboControl::PerformAction(const wxControlAction& action,
-                                          long numArg,
-                                          const wxString& strArg)
+bool wxGenericComboCtrl::PerformAction(const wxControlAction& action,
+                                       long numArg,
+                                       const wxString& strArg)
 {
     bool processed = false;
     if ( action == wxACTION_COMBOBOX_POPUP )
@@ -361,7 +385,7 @@ bool wxGenericComboControl::PerformAction(const wxControlAction& action,
 // If native wxComboCtrl was not defined, then prepare a simple
 // front-end so that wxRTTI works as expected.
 #ifndef _WX_COMBOCONTROL_H_
-IMPLEMENT_DYNAMIC_CLASS(wxComboCtrl, wxGenericComboControl)
+IMPLEMENT_DYNAMIC_CLASS(wxComboCtrl, wxGenericComboCtrl)
 #endif
 
 #endif // !wxCOMBOCONTROL_FULLY_FEATURED