]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/listctrl.cpp
Deallocate wxThreadSpecificInfo when wxThread ends.
[wxWidgets.git] / src / os2 / listctrl.cpp
index 99a792abe0d638c6e8867c830d221f6d69aac465..5954c424d10df05696fe2f5f8ac115e3d82ec11e 100644 (file)
@@ -4,9 +4,8 @@
 // Author:      David Webster
 // Modified by:
 // Created:     01/21/03
-// RCS-ID:      $Id$
 // Copyright:   (c) David Webster
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
-    #pragma implementation "listctrl.h"
-    #pragma implementation "listctrlbase.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
     #include "wx/intl.h"
     #include "wx/log.h"
     #include "wx/settings.h"
+    #include "wx/dcclient.h"
+    #include "wx/textctrl.h"
 #endif
 
-#include "wx/textctrl.h"
 #include "wx/imaglist.h"
 #include "wx/listctrl.h"
-#include "wx/dcclient.h"
 
 #include "wx/os2/private.h"
 
 //   how many records the view will have, initially, and how many columns
 //   the detail view of the container will have, as the container represents
 //   a known data block.  Thus the OS/2 PM CV_DETAIL view, i.e.
-//   the wxWindows wxLC_REPORT view, relies on STATIC structure for its
+//   the wxWidgets wxLC_REPORT view, relies on STATIC structure for its
 //   columnar data.  It gets the data to display by telling it the specific
 //   offset of the field in the struct containing the displayable data.  That
 //   data has be of OS/2 Types, PSZ (char string), CDATE or CTIME format.
-//   wxWindows is dynamic in nature, however.  We insert columns, one at a
+//   wxWidgets is dynamic in nature, however.  We insert columns, one at a
 //   time and do not know how many until the app is done inserting them. So
 //   for OS/2 I have to set a max allowable since they are fixed.  We return
 //   an error to the app if they include more than we can handle.
@@ -111,12 +105,12 @@ typedef struct _MYRECORD
 // Problem:
 //  The MSW version had problems with SetTextColour() et al as the
 //  CListItemAttr's were stored keyed on the item index. If a item was
-//  inserted anywhere but the end of the list the the text attributes
+//  inserted anywhere but the end of the list the text attributes
 //  (colour etc) for the following items were out of sync.
 //
 // Solution:
 //  Under MSW the only way to associate data with a
-//  List item independant of its position in the list is to store a pointer
+//  List item independent of its position in the list is to store a pointer
 //  to it in its lParam attribute. However user programs are already using
 //  this (via the SetItemData() GetItemData() calls).
 //
@@ -145,8 +139,7 @@ public:
 
     ~CListItemInternalData()
     {
-        delete m_pAttr;
-        m_pAttr = NULL;
+        wxDELETE(m_pAttr);
     }
 
     wxListItemAttr*                 m_pAttr;
@@ -492,14 +485,12 @@ SHORT EXPENTRY InternalDataCompareFunc (
 //  none
 //
 /////////////////////////////////////////////////////////////////////////////
-void ConvertFromOS2ListItem (
-  HWND                              hWndListCtrl
-, wxListItem&                       rInfo
-, PMYRECORD                         pRecord
-)
+void ConvertFromOS2ListItem ( HWND hWndListCtrl,
+                              wxListItem& rInfo,
+                              PMYRECORD pRecord )
 {
-    CListItemInternalData*          pInternaldata = (CListItemInternalData *)pRecord->m_ulUserData;
-    bool                            bNeedText = FALSE;
+    CListItemInternalData* pInternaldata = (CListItemInternalData *)pRecord->m_ulUserData;
+    bool bNeedText = false;
 
     if (pInternaldata)
         rInfo.SetData(pInternaldata->m_lParam);
@@ -709,7 +700,7 @@ void ConvertToOS2ListItem (
                     break;
 
                 default:
-                    wxFAIL_MSG( _T("wxOS2 does not support more than 10 columns in REPORT view") );
+                    wxFAIL_MSG( wxT("wxOS2 does not support more than 10 columns in REPORT view") );
                     break;
             }
         }
@@ -781,39 +772,6 @@ void ConvertToOS2ListCol (
     pField->offStruct = 0;
 } // end of ConvertToOS2ListCol
 
-// ----------------------------------------------------------------------------
-// events
-// ----------------------------------------------------------------------------
-
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_BEGIN_DRAG)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_BEGIN_RDRAG)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_END_LABEL_EDIT)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_DELETE_ITEM)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_GET_INFO)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_SET_INFO)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_SELECTED)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_DESELECTED)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_KEY_DOWN)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_INSERT_ITEM)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_CLICK)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_RIGHT_CLICK)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_DRAGGING)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_COL_END_DRAG)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_ACTIVATED)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_ITEM_FOCUSED)
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_LIST_CACHE_HINT)
-
-IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl)
-IMPLEMENT_DYNAMIC_CLASS(wxListView, wxListCtrl)
-IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject)
-
-IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxNotifyEvent)
-
 BEGIN_EVENT_TABLE(wxListCtrl, wxControl)
     EVT_PAINT(wxListCtrl::OnPaint)
 END_EVENT_TABLE()
@@ -831,30 +789,28 @@ void wxListCtrl::Init ()
     m_pImageListNormal     = NULL;
     m_pImageListSmall      = NULL;
     m_pImageListState      = NULL;
-    m_bOwnsImageListNormal = FALSE;
-    m_bOwnsImageListSmall  = FALSE;
-    m_bOwnsImageListState  = FALSE;
+    m_bOwnsImageListNormal = false;
+    m_bOwnsImageListSmall  = false;
+    m_bOwnsImageListState  = false;
     m_lBaseStyle           = 0L;
     m_nColCount            = 0;
     m_pTextCtrl            = NULL;
-    m_bAnyInternalData     = FALSE;
-    m_bHasAnyAttr          = FALSE;
+    m_bAnyInternalData     = false;
+    m_bHasAnyAttr          = false;
 } // end of wxListCtrl::Init
 
-bool wxListCtrl::Create (
-  wxWindow*                         pParent
-, wxWindowID                        vId
-, const wxPoint&                    rPos
-, const wxSize&                     rSize
-, long                              lStyle
-, const wxValidator&                rValidator
-, const wxString&                   rsName
-)
+bool wxListCtrl::Create ( wxWindow* pParent,
+                          wxWindowID vId,
+                          const wxPoint& rPos,
+                          const wxSize& rSize,
+                          long lStyle,
+                          const wxValidator& rValidator,
+                          const wxString& rsName )
 {
-    int                             nX = rPos.x;
-    int                             nY = rPos.y;
-    int                             nWidth = rSize.x;
-    int                             nHeight = rSize.y;
+    int nX = rPos.x;
+    int nY = rPos.y;
+    int nWidth = rSize.x;
+    int nHeight = rSize.y;
 
 #if wxUSE_VALIDATORS
     SetValidator(rValidator);
@@ -874,7 +830,7 @@ bool wxListCtrl::Create (
 
     m_windowId = (vId == -1) ? NewControlId() : vId;
 
-    long                            lSstyle = WS_VISIBLE | WS_TABSTOP;
+    long lSstyle = WS_VISIBLE | WS_TABSTOP;
 
     if (GetWindowStyleFlag() & wxCLIP_SIBLINGS)
         lSstyle |= WS_CLIPSIBLINGS;
@@ -884,23 +840,19 @@ bool wxListCtrl::Create (
                          ,nWidth
                          ,nHeight
                         ))
-        return FALSE;
+        return false;
     if (pParent)
         pParent->AddChild(this);
-   return TRUE;
+   return true;
 } // end of wxListCtrl::Create
 
-bool wxListCtrl::DoCreateControl (
-  int                               nX
-, int                               nY
-, int                               nWidth
-, int                               nHeight
-)
+bool wxListCtrl::DoCreateControl ( int nX, int nY,
+                                   int nWidth, int nHeight )
 {
-    DWORD                           lWstyle = m_lBaseStyle;
-    long                            lOldStyle = 0; // Dummy
+    DWORD lWstyle = m_lBaseStyle;
+    long lOldStyle = 0; // Dummy
 
-    CNRINFO                         vCnrInfo;
+    CNRINFO vCnrInfo;
 
     lWstyle |= ConvertToOS2Style( lOldStyle
                                  ,GetWindowStyleFlag()
@@ -919,7 +871,7 @@ bool wxListCtrl::DoCreateControl (
                                       );
     if (!m_hWnd)
     {
-        return FALSE;
+        return false;
     }
 
     //
@@ -930,7 +882,7 @@ bool wxListCtrl::DoCreateControl (
                       ,MPFROMP(&vCnrInfo)
                       ,(MPARAM)(USHORT)sizeof(CNRINFO)
                      ))
-        return FALSE;
+        return false;
     lWstyle = ConvertViewToOS2Style(GetWindowStyleFlag());
     vCnrInfo.flWindowAttr |= lWstyle;
     if (!::WinSendMsg( GetHWND()
@@ -938,7 +890,7 @@ bool wxListCtrl::DoCreateControl (
                       ,MPFROMP(&vCnrInfo)
                       ,(MPARAM)CMA_FLWINDOWATTR
                      ))
-        return FALSE;
+        return false;
 
     //
     // And now set needed arrangement flags
@@ -949,36 +901,30 @@ bool wxListCtrl::DoCreateControl (
                       ,(MPARAM)CMA_ARRANGEGRID
                       ,(MPARAM)lWstyle
                      ))
-        return FALSE;
+        return false;
     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
     SetForegroundColour(GetParent()->GetForegroundColour());
     SubclassWin(m_hWnd);
     SetFont(*wxSMALL_FONT);
     SetXComp(0);
     SetYComp(0);
-    SetSize( nX
-            ,nY
-            ,nWidth
-            ,nHeight
-           );
-    return TRUE;
+    SetSize( nX, nY, nWidth, nHeight );
+    return true;
 } // end of wxListCtrl::DoCreateControl
 
 void wxListCtrl::UpdateStyle ()
 {
     if (GetHWND())
     {
-        long                        lDummy;
-        DWORD                       dwStyleNew = ConvertToOS2Style( lDummy
-                                                                   ,GetWindowStyleFlag()
-                                                                  );
+        long lDummy;
+        DWORD dwStyleNew = ConvertToOS2Style( lDummy, GetWindowStyleFlag() );
 
         dwStyleNew |= m_lBaseStyle;
 
         //
         // Get the current window style.
         //
-        ULONG                       dwStyleOld = ::WinQueryWindowULong(GetHWND(), QWL_STYLE);
+        ULONG dwStyleOld = ::WinQueryWindowULong(GetHWND(), QWL_STYLE);
 
         //
         // Only set the window style if the view bits have changed.
@@ -994,12 +940,12 @@ void wxListCtrl::FreeAllInternalData ()
 {
     if (m_bAnyInternalData)
     {
-        int                         n = GetItemCount();
-        int                         i = 0;
+        int n = GetItemCount();
+        int i = 0;
 
         for (i = 0; i < n; i++)
             DeleteInternalData(this, (long)i);
-        m_bAnyInternalData = FALSE;
+        m_bAnyInternalData = false;
     }
 } // end of wxListCtrl::FreeAllInternalData
 
@@ -1010,8 +956,7 @@ wxListCtrl::~wxListCtrl ()
     {
         m_pTextCtrl->SetHWND(0);
         m_pTextCtrl->UnsubclassWin();
-        delete m_pTextCtrl;
-        m_pTextCtrl = NULL;
+        wxDELETE(m_pTextCtrl);
     }
 
     if (m_bOwnsImageListNormal)
@@ -1154,57 +1099,48 @@ long wxListCtrl::ConvertViewToOS2Style (
 // ----------------------------------------------------------------------------
 
 // Sets the foreground, i.e. text, colour
-bool wxListCtrl::SetForegroundColour (
-  const wxColour&                   rCol)
+bool wxListCtrl::SetForegroundColour (const wxColour& rCol)
 {
-    ULONG                           ulColor = wxColourToRGB(rCol);
+    ULONG ulColor = wxColourToRGB(rCol);
 
     if (!wxWindow::SetForegroundColour(rCol))
-        return FALSE;
-
+        return false;
 
     ::WinSetPresParam( GetHWND()
                       ,PP_FOREGROUNDCOLOR
                       ,sizeof(ULONG)
                       ,&ulColor
                      );
-    return TRUE;
+    return true;
 } // end of wxListCtrl::SetForegroundColour
 
 // Sets the background colour
-bool wxListCtrl::SetBackgroundColour (
-  const wxColour&                   rCol
-)
+bool wxListCtrl::SetBackgroundColour ( const wxColour& rCol )
 {
     if (!wxWindow::SetBackgroundColour(rCol))
-        return FALSE;
+        return false;
 
     //
     // We set the same colour for both the "empty" background and the items
     // background
     //
-    ULONG                           ulColor = wxColourToRGB(rCol);
+    ULONG ulColor = wxColourToRGB(rCol);
 
     ::WinSetPresParam( GetHWND()
                       ,PP_BACKGROUNDCOLOR
                       ,sizeof(ULONG)
                       ,&ulColor
                      );
-    return TRUE;
+    return true;
 } // end of wxListCtrl::SetBackgroundColour
 
 // Gets information about this column
-bool wxListCtrl::GetColumn (
-  int                               nCol
-, wxListItem&                       rItem
-) const
+bool wxListCtrl::GetColumn ( int nCol, wxListItem& rItem ) const
 {
-    PFIELDINFO                      pFieldInfo = FindOS2ListFieldByColNum ( GetHWND()
-                                                                           ,nCol
-                                                                          );
+    PFIELDINFO pFieldInfo = FindOS2ListFieldByColNum ( GetHWND(), nCol );
 
     if (!pFieldInfo)
-        return FALSE;
+        return false;
     rItem.SetWidth(pFieldInfo->cxWidth);
     if ((rItem.GetMask() & wxLIST_MASK_TEXT) &&
         (pFieldInfo->flData & CFA_STRING) &&
@@ -1221,37 +1157,25 @@ bool wxListCtrl::GetColumn (
         else if (pFieldInfo->flData & CFA_CENTER)
             rItem.m_format = wxLIST_FORMAT_CENTRE;
     }
-    return TRUE;
+    return true;
 } // end of wxListCtrl::GetColumn
 
 // Sets information about this column
-bool wxListCtrl::SetColumn (
-  int                               nCol
-, wxListItem&                       rItem
-)
+bool wxListCtrl::SetColumn ( int nCol, wxListItem& rItem )
 {
-    PFIELDINFO                      pFieldInfo = FindOS2ListFieldByColNum( GetHWND()
-                                                                          ,nCol
-                                                                         );
-    ConvertToOS2ListCol( nCol
-                        ,rItem
-                        ,pFieldInfo
-                       );
+    PFIELDINFO pFieldInfo = FindOS2ListFieldByColNum( GetHWND(), nCol );
+    ConvertToOS2ListCol( nCol, rItem, pFieldInfo );
     //
     // Since we changed the field pointed to, we invalidate to see the result
     //
     ::WinSendMsg(GetHWND(), CM_INVALIDATEDETAILFIELDINFO, NULL, NULL);
-    return TRUE;
+    return true;
 } // end of wxListCtrl::SetColumn
 
 // Gets the column width
-int wxListCtrl::GetColumnWidth (
-  int                               nCol
-) const
+int wxListCtrl::GetColumnWidth ( int nCol ) const
 {
-    PFIELDINFO                      pFieldInfo = FindOS2ListFieldByColNum ( GetHWND()
-                                                                           ,nCol
-                                                                          );
+    PFIELDINFO pFieldInfo = FindOS2ListFieldByColNum ( GetHWND(), nCol );
 
     if (!pFieldInfo)
         return 0;
@@ -1259,23 +1183,18 @@ int wxListCtrl::GetColumnWidth (
 } // end of wxListCtrl::GetColumnWidth
 
 // Sets the column width
-bool wxListCtrl::SetColumnWidth (
-  int                               nCol
-, int                               nWidth
-)
+bool wxListCtrl::SetColumnWidth ( int nCol, int nWidth )
 {
-    int                             nCol2 = nCol;
-    int                             nWidth2 = nWidth;
+    int nCol2 = nCol;
+    int nWidth2 = nWidth;
 
     if (GetWindowStyleFlag() & wxLC_LIST)
         nCol2 = -1;
 
-    PFIELDINFO                      pFieldInfo = FindOS2ListFieldByColNum( GetHWND()
-                                                                          ,nCol
-                                                                         );
+    PFIELDINFO pFieldInfo = FindOS2ListFieldByColNum( GetHWND(), nCol );
     pFieldInfo->cxWidth = nWidth;
     ::WinSendMsg(GetHWND(), CM_INVALIDATEDETAILFIELDINFO, NULL, NULL);
-    return TRUE;
+    return true;
 } // end of wxListCtrl::SetColumnWidth
 
 // Gets the number of items that can fit vertically in the
@@ -1333,35 +1252,22 @@ wxTextCtrl* wxListCtrl::GetEditControl() const
 }
 
 // Gets information about the item
-bool wxListCtrl::GetItem (
-  wxListItem&                       rInfo
-) const
+bool wxListCtrl::GetItem ( wxListItem& rInfo ) const
 {
-    PMYRECORD                       pRecord = FindOS2ListRecordByID( GetHWND()
-                                                                    ,rInfo.GetId()
-                                                                   );
+    PMYRECORD pRecord = FindOS2ListRecordByID( GetHWND(), rInfo.GetId() );
 
     //
     // Give NULL as hwnd as we already have everything we need
     //
-    ConvertFromOS2ListItem( NULL
-                           ,rInfo
-                           ,pRecord
-                          );
-    return TRUE;
+    ConvertFromOS2ListItem( NULL, rInfo, pRecord );
+    return true;
 } // end of wxListCtrl::GetItem
 
 // Sets information about the item
-bool wxListCtrl::SetItem (
-  wxListItem&                       rInfo
-)
+bool wxListCtrl::SetItem ( wxListItem& rInfo )
 {
-    PFIELDINFO                      pFieldInfo = FindOS2ListFieldByColNum ( GetHWND()
-                                                                           ,rInfo.GetColumn()
-                                                                          );
-    PMYRECORD                       pRecord = FindOS2ListRecordByID( GetHWND()
-                                                                    ,rInfo.GetId()
-                                                                   );
+    PFIELDINFO pFieldInfo = FindOS2ListFieldByColNum ( GetHWND(), rInfo.GetColumn() );
+    PMYRECORD pRecord = FindOS2ListRecordByID( GetHWND(), rInfo.GetId() );
 
     ConvertToOS2ListItem( this
                          ,rInfo
@@ -1387,7 +1293,7 @@ bool wxListCtrl::SetItem (
             //
             // Need to set it
             //
-            m_bAnyInternalData    = TRUE;
+            m_bAnyInternalData    = true;
             pData                 = new CListItemInternalData();
             pRecord->m_ulUserData = (unsigned long)pData;
         };
@@ -1412,19 +1318,19 @@ bool wxListCtrl::SetItem (
     //
     // We need to update the item immediately to show the new image
     //
-    bool                            bUpdateNow = (rInfo.GetMask() & wxLIST_MASK_IMAGE) != 0;
+    bool bUpdateNow = (rInfo.GetMask() & wxLIST_MASK_IMAGE) != 0;
 
     //
     // Check whether it has any custom attributes
     //
     if (rInfo.HasAttributes())
     {
-        m_bHasAnyAttr = TRUE;
+        m_bHasAnyAttr = true;
 
         //
         // If the colour has changed, we must redraw the item
         //
-        bUpdateNow = TRUE;
+        bUpdateNow = true;
     }
     if (::WinIsWindowVisible(GetHWND()))
     {
@@ -1440,7 +1346,7 @@ bool wxListCtrl::SetItem (
                  ,NULL
                  ,NULL
                 );
-    return TRUE;
+    return true;
 } // end of wxListCtrl::SetItem
 
 long wxListCtrl::SetItem (
@@ -1482,23 +1388,15 @@ int wxListCtrl::GetItemState (
 } // end of wxListCtrl::GetItemState
 
 // Sets the item state
-bool wxListCtrl::SetItemState (
-  long                              lItem
-, long                              lState
-, long                              lStateMask
-)
+bool wxListCtrl::SetItemState ( long lItem, long lState, long lStateMask )
 {
-    PMYRECORD                       pRecord = FindOS2ListRecordByID( GetHWND()
-                                                                    ,lItem
-                                                                   );
+    PMYRECORD pRecord = FindOS2ListRecordByID( GetHWND(), lItem );
 
     //
     // Don't use SetItem() here as it doesn't work with the virtual list
     // controls
     //
-    ConvertToOS2Flags( lState
-                      ,pRecord
-                     );
+    ConvertToOS2Flags( lState, pRecord );
 
     //
     // for the virtual list controls we need to refresh the previously focused
@@ -1540,7 +1438,7 @@ bool wxListCtrl::SetItemState (
             RefreshItem(lFocusOld);
         }
     }
-    return TRUE;
+    return true;
 } // end of wxListCtrl::SetItemState
 
 // Sets the item image
@@ -1548,14 +1446,24 @@ bool wxListCtrl::SetItemImage (
   long                              lItem
 , int                               nImage
 , int                               WXUNUSED(nSelImage))
+{
+    return SetItemColumnInfo(lItem, 0, nImage);
+} // end of wxListCtrl::SetItemImage
+
+// Sets the item image
+bool wxListCtrl::SetItemColumnImage (
+  long                              lItem
+, long                              lColumn
+, int                               nImage)
 {
     wxListItem                      vInfo;
 
     vInfo.m_mask   = wxLIST_MASK_IMAGE;
     vInfo.m_image  = nImage;
     vInfo.m_itemId = lItem;
+    vInfo.m_col    = lColumn;
     return SetItem(vInfo);
-} // end of wxListCtrl::SetItemImage
+} // end of wxListCtrl::SetItemColumnImage
 
 // Gets the item text
 wxString wxListCtrl::GetItemText (
@@ -1601,9 +1509,9 @@ long wxListCtrl::GetItemData (
 } // end of wxListCtrl::GetItemData
 
 // Sets the item data
-bool wxListCtrl::SetItemData (
+bool wxListCtrl::SetItemPtrData (
   long                              lItem
-, long                              lData
+, wxUIntPtr                         lData
 )
 {
     wxListItem                      vInfo;
@@ -1612,25 +1520,21 @@ bool wxListCtrl::SetItemData (
     vInfo.m_itemId = lItem;
     vInfo.m_data   = lData;
     return SetItem(vInfo);
-} // end of wxListCtrl::SetItemData
+} // end of wxListCtrl::SetItemPtrData
 
 // Gets the item rectangle
-bool wxListCtrl::GetItemRect (
-  long                              lItem
-, wxRect&                           rRect
-, int                               nCode
-) const
+bool wxListCtrl::GetItemRect ( long lItem,
+                               wxRect& rRect,
+                               int nCode ) const
 {
-    bool                            bSuccess;
-    PMYRECORD                       pRecord = FindOS2ListRecordByID( GetHWND()
-                                                                    ,lItem
-                                                                   );
-    QUERYRECORDRECT                 vQueryRect;
-    RECTL                           vRect;
-    int                             nHeight;
+    bool bSuccess;
+    PMYRECORD pRecord = FindOS2ListRecordByID( GetHWND(), lItem );
+    QUERYRECORDRECT vQueryRect;
+    RECTL vRect;
+    int nHeight;
 
     if (!pRecord)
-        return FALSE;
+        return false;
     vQueryRect.cb                = sizeof(QUERYRECORDRECT);
     vQueryRect.pRecord           = &pRecord->m_vRecord;
     vQueryRect.fRightSplitWindow = TRUE;
@@ -1643,33 +1547,26 @@ bool wxListCtrl::GetItemRect (
     //
     // remember OS/2 is backwards
     //
-    GetClientSize( NULL
-                  ,&nHeight
-                 );
+    GetClientSize( NULL, &nHeight );
     rRect.x      = vRect.xLeft;
     rRect.y      = nHeight - vRect.yTop;
     rRect.width  = vRect.xRight;
     rRect.height = nHeight - vRect.yBottom;
-    bSuccess = TRUE;
+    bSuccess = true;
     return bSuccess;
 } // end of wxListCtrl::GetItemRect
 
 // Gets the item position
-bool wxListCtrl::GetItemPosition (
-  long                              lItem
-, wxPoint&                          rPos
-) const
+bool wxListCtrl::GetItemPosition ( long lItem, wxPoint& rPos ) const
 {
-    bool                            bSuccess;
-    PMYRECORD                       pRecord = FindOS2ListRecordByID( GetHWND()
-                                                                    ,lItem
-                                                                   );
-    QUERYRECORDRECT                 vQueryRect;
-    RECTL                           vRect;
-    int                             nHeight;
+    bool bSuccess;
+    PMYRECORD pRecord = FindOS2ListRecordByID( GetHWND() , lItem );
+    QUERYRECORDRECT vQueryRect;
+    RECTL vRect;
+    int nHeight;
 
     if (!pRecord)
-        return FALSE;
+        return false;
     vQueryRect.cb                = sizeof(QUERYRECORDRECT);
     vQueryRect.pRecord           = &pRecord->m_vRecord;
     vQueryRect.fRightSplitWindow = TRUE;
@@ -1682,25 +1579,20 @@ bool wxListCtrl::GetItemPosition (
     //
     // remember OS/2 is backwards
     //
-    GetClientSize( NULL
-                  ,&nHeight
-                 );
+    GetClientSize( NULL, &nHeight );
     rPos.x   = vRect.xLeft;
     rPos.y   = nHeight - vRect.yTop;
-    bSuccess = TRUE;
+    bSuccess = true;
     return bSuccess;
 } // end of wxListCtrl::GetItemPosition
 
 // Sets the item position.
-bool wxListCtrl::SetItemPosition (
-  long                              lItem
-, const wxPoint&                    rPos
-)
+bool wxListCtrl::SetItemPosition ( long lItem, const wxPoint& rPos )
 {
     //
     // Items cannot be positioned in X/Y coord in OS/2
     //
-    return FALSE;
+    return false;
 } // end of wxListCtrl::SetItemPosition
 
 // Gets the number of items in the list control
@@ -1718,11 +1610,9 @@ int wxListCtrl::GetItemCount () const
 } // end of wxListCtrl::GetItemCount
 
 // Retrieves the spacing between icons in pixels.
-// If small is TRUE, gets the spacing for the small icon
+// If bIsSmall is true, gets the spacing for the small icon
 // view, otherwise the large icon view.
-int wxListCtrl::GetItemSpacing (
-  bool                              bIsSmall
-) const
+int wxListCtrl::GetItemSpacing ( bool bIsSmall ) const
 {
     CNRINFO                         vCnrInfo;
 
@@ -1911,48 +1801,42 @@ wxImageList* wxListCtrl::GetImageList (
     return NULL;
 } // end of wxListCtrl::GetImageList
 
-void wxListCtrl::SetImageList (
-  wxImageList*                      pImageList
-, int                               nWhich
-)
+void wxListCtrl::SetImageList ( wxImageList* pImageList,
+                                int nWhich )
 {
     if (nWhich == wxIMAGE_LIST_NORMAL)
     {
         if (m_bOwnsImageListNormal)
             delete m_pImageListNormal;
         m_pImageListNormal     = pImageList;
-        m_bOwnsImageListNormal = FALSE;
+        m_bOwnsImageListNormal = false;
     }
     else if (nWhich == wxIMAGE_LIST_SMALL)
     {
         if (m_bOwnsImageListSmall)
             delete m_pImageListSmall;
         m_pImageListSmall    = pImageList;
-        m_bOwnsImageListSmall = FALSE;
+        m_bOwnsImageListSmall = false;
     }
     else if (nWhich == wxIMAGE_LIST_STATE)
     {
         if (m_bOwnsImageListState)
             delete m_pImageListState;
         m_pImageListState     = pImageList;
-        m_bOwnsImageListState = FALSE;
+        m_bOwnsImageListState = false;
     }
 } // end of wxListCtrl::SetImageList
 
-void wxListCtrl::AssignImageList (
-  wxImageList*                      pImageList
-, int                               nWhich
-)
+void wxListCtrl::AssignImageList ( wxImageList* pImageList, int nWhich )
 {
-    SetImageList( pImageList
-                 ,nWhich
-                );
+    SetImageList( pImageList, nWhich );
+
     if (nWhich == wxIMAGE_LIST_NORMAL )
-        m_bOwnsImageListNormal = TRUE;
+        m_bOwnsImageListNormal = true;
     else if (nWhich == wxIMAGE_LIST_SMALL )
-        m_bOwnsImageListSmall = TRUE;
+        m_bOwnsImageListSmall = true;
     else if (nWhich == wxIMAGE_LIST_STATE )
-        m_bOwnsImageListState = TRUE;
+        m_bOwnsImageListState = true;
 } // end of wxListCtrl::AssignImageList
 
 // ----------------------------------------------------------------------------
@@ -1960,12 +1844,10 @@ void wxListCtrl::AssignImageList (
 // ----------------------------------------------------------------------------
 
 // Arranges the items
-bool wxListCtrl::Arrange (
-  int                               nFlag
-)
+bool wxListCtrl::Arrange ( int nFlag )
 {
-    ULONG                           ulType = 0L;
-    ULONG                           ulFlags = 0L;
+    ULONG ulType = 0L;
+    ULONG ulFlags = 0L;
 
     if (nFlag == wxLIST_ALIGN_SNAP_TO_GRID)
     {
@@ -1987,24 +1869,20 @@ bool wxListCtrl::Arrange (
     //
     // We do not support CMA_ARRANGESELECTED
     //
-    return TRUE;
+    return true;
 } // end of wxListCtrl::Arrange
 
 // Deletes an item
-bool wxListCtrl::DeleteItem (
-  long                              lItem
-)
+bool wxListCtrl::DeleteItem ( long lItem )
 {
-    PMYRECORD                       pRecord = FindOS2ListRecordByID( GetHWND()
-                                                                    ,lItem
-                                                                   );
+    PMYRECORD pRecord = FindOS2ListRecordByID( GetHWND(), lItem );
     if (LONGFROMMR(::WinSendMsg( GetHWND()
                                 ,CM_REMOVERECORD
                                 ,(MPARAM)pRecord
                                 ,MPFROM2SHORT(1, CMA_FREE)
                                )) == -1L)
     {
-        return FALSE;
+        return false;
     }
 
     //
@@ -2033,7 +1911,7 @@ bool wxListCtrl::DeleteItem (
         vRectWin.y      = vRectItem.GetBottom();
         RefreshRect(vRectWin);
     }
-    return TRUE;
+    return true;
 } // end of wxListCtrl::DeleteItem
 
 // Deletes all items
@@ -2056,18 +1934,14 @@ bool wxListCtrl::DeleteAllColumns ()
     }
 
     wxASSERT_MSG(m_nColCount == 0, wxT("no columns should be left"));
-    return TRUE;
+    return true;
 } // end of wxListCtrl::DeleteAllColumns
 
 // Deletes a column
-bool wxListCtrl::DeleteColumn (
-  int                               nCol
-)
+bool wxListCtrl::DeleteColumn ( int nCol )
 {
-    bool                            bSuccess = FALSE;
-    PFIELDINFO                      pField = FindOS2ListFieldByColNum( GetHWND()
-                                                                      ,nCol
-                                                                     );
+    bool bSuccess = false;
+    PFIELDINFO pField = FindOS2ListFieldByColNum( GetHWND(), nCol );
     bSuccess = ((LONG)::WinSendMsg( GetHWND()
                                    ,CM_REMOVEDETAILFIELDINFO
                                    ,MPFROMP(pField)
@@ -2118,32 +1992,26 @@ wxTextCtrl* wxListCtrl::EditLabel (
 
 // End label editing, optionally cancelling the edit.  Under OS/2 you close
 // the record for editting
-bool wxListCtrl::EndEditLabel (
-  bool                              WXUNUSED(bCancel)
-)
+bool wxListCtrl::EndEditLabel ( bool WXUNUSED(bCancel) )
 {
     ::WinSendMsg( GetHWND()
                  ,CM_CLOSEEDIT
                  ,(MPARAM)0
                  ,(MPARAM)0
                 );
-    return TRUE;
+    return true;
 } // end of wxListCtrl::EndEditLabel
 
 // Ensures this item is visible
-bool wxListCtrl::EnsureVisible (
-  long                              lItem
-)
+bool wxListCtrl::EnsureVisible ( long lItem )
 {
-    PMYRECORD                       pRecord = FindOS2ListRecordByID( GetHWND()
-                                                                    ,lItem
-                                                                   );
+    PMYRECORD pRecord = FindOS2ListRecordByID( GetHWND(), lItem );
     ::WinSendMsg( GetHWND()
                  ,CM_INVALIDATERECORD
                  ,MPFROMP(pRecord)
                  ,MPFROM2SHORT((SHORT)1, CMA_NOREPOSITION)
                 );
-    return TRUE;
+    return true;
 } // end of wxListCtrl::EnsureVisible
 
 // Find an item whose label matches this string, starting from the item after 'start'
@@ -2264,7 +2132,7 @@ long wxListCtrl::FindItem (
     vLibRect.SetTop(vRect.yTop);
     vLibRect.SetRight(vRect.xRight);
     vLibRect.SetBottom(vRect.yBottom);
-    if (vLibRect.Inside(rPoint))
+    if (vLibRect.Contains(rPoint))
         return pRecord->m_ulItemId;
 
     for (i = lStart + 1; i < vCnrInfo.cRecords; i++)
@@ -2284,7 +2152,7 @@ long wxListCtrl::FindItem (
         vLibRect.SetTop(vRect.yTop);
         vLibRect.SetRight(vRect.xRight);
         vLibRect.SetBottom(vRect.yBottom);
-        if (vLibRect.Inside(rPoint))
+        if (vLibRect.Contains(rPoint))
             return pRecord->m_ulItemId;
     }
     return -1L;
@@ -2342,7 +2210,7 @@ long wxListCtrl::InsertItem (
   wxListItem&                       rInfo
 )
 {
-    wxASSERT_MSG( !IsVirtual(), _T("can't be used with virtual controls") );
+    wxASSERT_MSG( !IsVirtual(), wxT("can't be used with virtual controls") );
 
     PFIELDINFO                      pFieldInfo = FindOS2ListFieldByColNum ( GetHWND()
                                                                            ,rInfo.GetColumn()
@@ -2378,14 +2246,14 @@ long wxListCtrl::InsertItem (
     vInsert.fInvalidateRecord = TRUE;
 
     //
-    // Check wether we need to allocate our internal data
+    // Check whether we need to allocate our internal data
     //
     bool                            bNeedInternalData = ((rInfo.GetMask() & wxLIST_MASK_DATA) ||
                                                           rInfo.HasAttributes()
                                                         );
     if (bNeedInternalData)
     {
-        m_bAnyInternalData = TRUE;
+        m_bAnyInternalData = true;
 
         //
         // Internal stucture that manages data
@@ -2531,10 +2399,7 @@ long wxListCtrl::InsertColumn (
 
 // scroll the control by the given number of pixels (exception: in list view,
 // dx is interpreted as number of columns)
-bool wxListCtrl::ScrollList (
-  int                               nDx
-, int                               nDy
-)
+bool wxListCtrl::ScrollList ( int nDx, int nDy )
 {
     if (nDx > 0)
         ::WinSendMsg( GetHWND()
@@ -2548,15 +2413,12 @@ bool wxListCtrl::ScrollList (
                      ,(MPARAM)CMA_VERTICAL
                      ,(MPARAM)nDy
                     );
-    return TRUE;
+    return true;
 } // end of wxListCtrl::ScrollList
 
-bool wxListCtrl::SortItems (
-  wxListCtrlCompare                 fn
-, long                              lData
-)
+bool wxListCtrl::SortItems ( wxListCtrlCompare fn, long lData )
 {
-    SInternalDataSort               vInternalData;
+    SInternalDataSort vInternalData;
 
     vInternalData.m_fnUser = fn;
     vInternalData.m_lData  = lData;
@@ -2568,48 +2430,39 @@ bool wxListCtrl::SortItems (
                       ,(PVOID)&vInternalData
                      ))
     {
-        wxLogDebug(_T("CM_SORTRECORD failed"));
-        return FALSE;
+        wxLogDebug(wxT("CM_SORTRECORD failed"));
+        return false;
     }
-    return TRUE;
+    return true;
 } // end of wxListCtrl::SortItems
 
 // ----------------------------------------------------------------------------
 // message processing
 // ----------------------------------------------------------------------------
 
-bool wxListCtrl::OS2Command (
-  WXUINT                            uCmd
-, WXWORD                            wId
-)
+bool wxListCtrl::OS2Command ( WXUINT uCmd, WXWORD wId )
 {
     if (uCmd == CN_ENDEDIT)
     {
-        wxCommandEvent              vEvent( wxEVT_COMMAND_TEXT_UPDATED
-                                           ,wId
-                                          );
+        wxCommandEvent vEvent( wxEVT_TEXT, wId );
 
         vEvent.SetEventObject( this );
         ProcessCommand(vEvent);
-        return TRUE;
+        return true;
     }
     else if (uCmd == CN_KILLFOCUS)
     {
-        wxCommandEvent              vEvent( wxEVT_KILL_FOCUS
-                                           ,wId
-                                          );
+        wxCommandEvent vEvent( wxEVT_KILL_FOCUS, wId );
         vEvent.SetEventObject( this );
         ProcessCommand(vEvent);
-        return TRUE;
+        return true;
     }
     else
-        return FALSE;
+        return false;
 } // end of wxListCtrl::OS2Command
 
 // Necessary for drawing hrules and vrules, if specified
-void wxListCtrl::OnPaint (
-  wxPaintEvent&                     rEvent
-)
+void wxListCtrl::OnPaint ( wxPaintEvent& rEvent )
 {
     wxPaintDC                       vDc(this);
     wxPen                           vPen(wxSystemSettings::GetColour( wxSYS_COLOUR_3DLIGHT)
@@ -2710,7 +2563,7 @@ wxString wxListCtrl::OnGetItemText (
 {
     // this is a pure virtual function, in fact - which is not really pure
     // because the controls which are not virtual don't need to implement it
-    wxFAIL_MSG( _T("not supposed to be called") );
+    wxFAIL_MSG( wxT("not supposed to be called") );
     return wxEmptyString;
 } // end of wxListCtrl::OnGetItemText
 
@@ -2719,28 +2572,26 @@ int wxListCtrl::OnGetItemImage (
 ) const
 {
     // same as above
-    wxFAIL_MSG( _T("not supposed to be called") );
+    wxFAIL_MSG( wxT("not supposed to be called") );
     return -1;
 } // end of wxListCtrl::OnGetItemImage
 
-wxListItemAttr* wxListCtrl::OnGetItemAttr (
-  long                              WXUNUSED_UNLESS_DEBUG(lItem)
+int wxListCtrl::OnGetItemColumnImage (
+  long                              lItem,
+  long                              lColumn
 ) const
 {
-    wxASSERT_MSG( lItem >= 0 && lItem < GetItemCount(),
-                  _T("invalid item index in OnGetItemAttr()") );
+    if (!lColumn)
+        return OnGetItemImage(lItem);
 
-    //
-    // No attributes by default
-    //
-    return NULL;
-} // end of wxListCtrl::OnGetItemAttr
+    return -1;
+} // end of wxListCtrl::OnGetItemColumnImage
 
 void wxListCtrl::SetItemCount (
   long                              lCount
 )
 {
-    wxASSERT_MSG( IsVirtual(), _T("this is for virtual controls only") );
+    wxASSERT_MSG( IsVirtual(), wxT("this is for virtual controls only") );
 
     //
     // Cannot explicitly set the record count in OS/2
@@ -2759,34 +2610,25 @@ void wxListCtrl::RefreshItem (
     RefreshRect(vRect);
 } // end of wxListCtrl::RefreshItem
 
-void wxListCtrl::RefreshItems (
-  long                              lItemFrom
-, long                              lItemTo
-)
+void wxListCtrl::RefreshItems ( long lItemFrom, long lItemTo )
 {
-    wxRect                          vRect1;
-    wxRect                          vRect2;
+    wxRect vRect1;
+    wxRect vRect2;
 
-    GetItemRect( lItemFrom
-                ,vRect1
-               );
-    GetItemRect( lItemTo
-                ,vRect2
-               );
+    GetItemRect( lItemFrom , vRect1 );
+    GetItemRect( lItemTo , vRect2 );
 
-    wxRect                          vRect = vRect1;
+    wxRect vRect = vRect1;
 
     vRect.height = vRect2.GetBottom() - vRect1.GetTop();
     RefreshRect(vRect);
 } // end of wxListCtrl::RefreshItems
 
-MRESULT wxListCtrl::OS2WindowProc(
-  WXUINT                            uMsg
-, WXWPARAM                          wParam
-, WXLPARAM                          lParam
-)
+MRESULT wxListCtrl::OS2WindowProc( WXUINT uMsg,
+                                   WXWPARAM wParam,
+                                   WXLPARAM lParam )
 {
-    bool                            bProcessed = FALSE;
+    bool                            bProcessed = false;
     MRESULT                         lRc;
     wxListEvent                     vEvent( wxEVT_NULL
                                            ,m_windowId
@@ -2831,7 +2673,7 @@ MRESULT wxListCtrl::OS2WindowProc(
                     {
                         PMYRECORD       pRecord = (PMYRECORD)pDragInit->pRecord;
 
-                        vEventType = wxEVT_COMMAND_LIST_BEGIN_RDRAG;
+                        vEventType = wxEVT_LIST_BEGIN_RDRAG;
                         vEvent.m_itemIndex   = pRecord->m_ulItemId;
                         vEvent.m_pointDrag.x = pDragInit->x;
                         vEvent.m_pointDrag.y = pDragInit->y;
@@ -2842,7 +2684,7 @@ MRESULT wxListCtrl::OS2WindowProc(
                     pEditData = (PCNREDITDATA)lParam;
                     if (pEditData)
                     {
-                        vEventType = wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT;
+                        vEventType = wxEVT_LIST_BEGIN_LABEL_EDIT;
                         ConvertFromOS2ListItem( GetHWND()
                                                ,(wxListItem &)vEvent.GetItem()
                                                ,(PMYRECORD)pEditData->pRecord
@@ -2855,7 +2697,7 @@ MRESULT wxListCtrl::OS2WindowProc(
                     pEditData = (PCNREDITDATA)lParam;
                     if (pEditData)
                     {
-                        vEventType = wxEVT_COMMAND_LIST_END_LABEL_EDIT;
+                        vEventType = wxEVT_LIST_END_LABEL_EDIT;
                         ConvertFromOS2ListItem( GetHWND()
                                                ,(wxListItem &)vEvent.GetItem()
                                                ,(PMYRECORD)pEditData->pRecord
@@ -2873,7 +2715,7 @@ MRESULT wxListCtrl::OS2WindowProc(
                         wxListItem*     pItem = (wxListItem*)&vEvent.GetItem();
                         PMYRECORD       pMyRecord = (PMYRECORD)pNotifyEnter->pRecord;
 
-                        vEventType             = wxEVT_COMMAND_LIST_ITEM_ACTIVATED;
+                        vEventType             = wxEVT_LIST_ITEM_ACTIVATED;
                         vEvent.m_itemIndex = pMyRecord->m_ulItemId;
                         pItem->SetText(GetItemText(pMyRecord->m_ulItemId));
                         pItem->SetData(GetItemData(pMyRecord->m_ulItemId));
@@ -2885,7 +2727,7 @@ MRESULT wxListCtrl::OS2WindowProc(
                     //
             }
             vEvent.SetEventType(vEventType);
-            bProcessed = GetEventHandler()->ProcessEvent(vEvent);
+            bProcessed = HandleWindowEvent(vEvent);
             break;
     }
     if (!bProcessed)