]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/listctrl.cpp
added wxDebugContext::SetShutdownNotifyFunction() (patch 1887210)
[wxWidgets.git] / src / msw / listctrl.cpp
index 1f67a95bbcd4ba03ae37bf88760a882e87d8440e..84eafb3d90bbc21c8a161080f0c4c2c203d43329 100644 (file)
@@ -279,7 +279,7 @@ wxEND_HANDLERS_TABLE()
 wxCONSTRUCTOR_5( wxListCtrl , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
 
 /*
- TODO : Expose more information of a list's layout etc. via appropriate objects (à la NotebookPageInfo)
+ TODO : Expose more information of a list's layout etc. via appropriate objects (a la NotebookPageInfo)
 */
 #else
 IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl)
@@ -338,9 +338,17 @@ bool wxListCtrl::Create(wxWindow *parent,
     // GetTextColour will always return black
     SetTextColour(GetDefaultAttributes().colFg);
 
+    if ( InReportView() )
+        MSWSetExListStyles();
+
+    return true;
+}
+
+void wxListCtrl::MSWSetExListStyles()
+{
     // for comctl32.dll v 4.70+ we want to have some non default extended
     // styles because it's prettier (and also because wxGTK does it like this)
-    if ( InReportView() && wxApp::GetComCtl32Version() >= 470 )
+    if ( wxApp::GetComCtl32Version() >= 470 )
     {
         ::SendMessage
         (
@@ -354,8 +362,6 @@ bool wxListCtrl::Create(wxWindow *parent,
             LVS_EX_HEADERDRAGDROP
         );
     }
-
-    return true;
 }
 
 WXDWORD wxListCtrl::MSWGetStyle(long style, WXDWORD *exstyle) const
@@ -454,6 +460,11 @@ void wxListCtrl::UpdateStyle()
         if ( dwStyleOld != dwStyleNew )
         {
             ::SetWindowLong(GetHwnd(), GWL_STYLE, dwStyleNew);
+
+            // if we switched to the report view, set the extended styles for
+            // it too
+            if ( !(dwStyleOld & LVS_REPORT) && (dwStyleNew & LVS_REPORT) )
+                MSWSetExListStyles();
         }
     }
 }
@@ -1806,17 +1817,14 @@ bool wxListCtrl::MSWShouldPreProcessMessage(WXMSG* msg)
 {
     if ( msg->message == WM_KEYDOWN )
     {
-        if ( msg->wParam == VK_RETURN )
+        // Only eat VK_RETURN if not being used by the application in
+        // conjunction with modifiers
+        if ( msg->wParam == VK_RETURN && !wxIsAnyModifierDown() )
         {
-            // We need VK_RETURN to generate wxEVT_COMMAND_LIST_ITEM_ACTIVATED,
-            // but only if none of the modifiers is down.  We'll let normal
-            // accelerators handle those.
-            if ( !wxIsCtrlDown() && !wxIsCtrlDown() &&
-                 !((HIWORD(msg->lParam) & KF_ALTDOWN) == KF_ALTDOWN))
+            // we need VK_RETURN to generate wxEVT_COMMAND_LIST_ITEM_ACTIVATED
             return false;
         }
     }
-
     return wxControl::MSWShouldPreProcessMessage(msg);
 }
 
@@ -2149,7 +2157,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
                             // focus event from here and the selection one
                             // below
                             event.SetEventType(eventType);
-                            (void)GetEventHandler()->ProcessEvent(event);
+                            (void)HandleWindowEvent(event);
                         }
                         else // no focus event to send
                         {
@@ -2421,7 +2429,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
 
     event.SetEventType(eventType);
 
-    bool processed = GetEventHandler()->ProcessEvent(event);
+    bool processed = HandleWindowEvent(event);
 
     // post processing
     // ---------------
@@ -2824,8 +2832,10 @@ void wxListCtrl::OnPaint(wxPaintEvent& event)
 
             int numCols = GetColumnCount();
             int* indexArray = new int[numCols];
-            BOOL rv = ListView_GetColumnOrderArray( GetHwnd(), numCols, indexArray );
-            wxASSERT_MSG( rv == TRUE, _T("invalid column index array in OnPaint()") );
+            if ( !ListView_GetColumnOrderArray( GetHwnd(), numCols, indexArray) )
+            {
+                wxFAIL_MSG( _T("invalid column index array in OnPaint()") );
+            }
 
             int x = itemRect.GetX();
             for (int col = 0; col < numCols; col++)