]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/listctrl.cpp
Ensure that a wxMenuItem's parent menu is updated if it is removed
[wxWidgets.git] / src / generic / listctrl.cpp
index b20d95fd8dd47325c06930a49b454d0a8a452f2c..cfd5dc91e23e597d0fd88baed34c99dd60c43b7a 100644 (file)
@@ -1808,13 +1808,17 @@ void wxListLineData::DrawTextFormatted(wxDC *dc,
         dc->GetTextExtent(ellipsis, &base_w, &h);
 
         // continue until we have enough space or only one character left
-        drawntext = text.Left(text.Length() - 1);
-        while (drawntext.Length() > 1)
+        wxCoord w_c, h_c;
+        size_t len = text.Length();
+        drawntext = text.Left(len);
+        while (len > 1)
         {
-            dc->GetTextExtent(drawntext, &w, &h);
+            dc->GetTextExtent(drawntext.Last(), &w_c, &h_c);
+            drawntext.RemoveLast();
+            len--;
+            w -= w_c;
             if (w + base_w <= width)
                 break;
-            drawntext = drawntext.Left(drawntext.Length() - 1);
         }
 
         // if still not enough space, remove ellipsis characters
@@ -3199,6 +3203,7 @@ void wxListMainWindow::OnMouse( wxMouseEvent &event )
 
         wxListEvent le( command, GetParent()->GetId() );
         le.SetEventObject( GetParent() );
+        le.m_itemIndex = current;
         le.m_pointDrag = m_dragStart;
         GetParent()->GetEventHandler()->ProcessEvent( le );
 
@@ -4511,6 +4516,9 @@ void wxListMainWindow::InsertItem( wxListItem &item )
     m_lines.Insert( line, id );
 
     m_dirty = TRUE;
+
+    SendNotify(id, wxEVT_COMMAND_LIST_INSERT_ITEM);
+
     RefreshLines(id, GetItemCount() - 1);
 }
 
@@ -4713,7 +4721,7 @@ bool wxGenericListCtrl::Create(wxWindow *parent,
         return FALSE;
 
     // don't create the inner window with the border
-    style &= ~wxSUNKEN_BORDER;
+    style &= ~wxBORDER_MASK;
 
     m_mainWin = new wxListMainWindow( this, -1, wxPoint(0,0), size, style );
 
@@ -4909,6 +4917,8 @@ bool wxGenericListCtrl::SetItemData( long item, long data )
 bool wxGenericListCtrl::GetItemRect( long item, wxRect &rect,  int WXUNUSED(code) ) const
 {
     m_mainWin->GetItemRect( item, rect );
+    if ( m_mainWin->HasHeader() )
+        rect.y += HEADER_HEIGHT + 1;
     return TRUE;
 }