else
colText = *wxBLACK;
#else
- colText = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
+ if ( hasFocus )
+ colText = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
+ else
+ colText = wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOXHIGHLIGHTTEXT);
#endif
}
else if ( attr && attr->HasTextColour() )
// NB: The code below is not really Mac-specific, but since we are close
// to 2.8 release and I don't have time to test on other platforms, I
-// defined this only for wxMac. If this behavior is desired on
+// defined this only for wxMac. If this behaviour is desired on
// other platforms, please go ahead and revise or remove the #ifdef.
#ifdef __WXMAC__
if ( !m_owner->IsVirtual() && (item.m_mask & wxLIST_MASK_STATE) &&
}
void wxListTextCtrlWrapper::OnChar( wxKeyEvent &event )
+{
+ if ( !CheckForEndEditKey(event) )
+ event.Skip();
+}
+
+bool wxListTextCtrlWrapper::CheckForEndEditKey(const wxKeyEvent& event)
{
switch ( event.m_keyCode )
{
break;
default:
- event.Skip();
+ return false;
}
+
+ return true;
}
void wxListTextCtrlWrapper::OnKeyUp( wxKeyEvent &event )
BEGIN_EVENT_TABLE(wxListMainWindow, wxWindow)
EVT_PAINT (wxListMainWindow::OnPaint)
EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse)
+ EVT_CHAR_HOOK (wxListMainWindow::OnCharHook)
EVT_CHAR (wxListMainWindow::OnChar)
EVT_KEY_DOWN (wxListMainWindow::OnKeyDown)
EVT_KEY_UP (wxListMainWindow::OnKeyUp)
event.Skip();
}
+void wxListMainWindow::OnCharHook( wxKeyEvent &event )
+{
+ if ( m_textctrlWrapper )
+ {
+ // When an in-place editor is active we should ensure that it always
+ // gets the key events that are special to it.
+ if ( m_textctrlWrapper->CheckForEndEditKey(event) )
+ {
+ // Skip the call to wxEvent::Skip() below.
+ return;
+ }
+ }
+
+ event.Skip();
+}
+
void wxListMainWindow::OnChar( wxKeyEvent &event )
{
wxWindow *parent = GetParent();
wxListLineData *line = new wxListLineData(this);
line->SetItem( item.m_col, item );
+ if ( item.m_mask & wxLIST_MASK_IMAGE )
+ {
+ // Reset the buffered height if it's not big enough for the new image.
+ int image = item.GetImage();
+ if ( m_small_image_list && image != -1 && InReportView() )
+ {
+ int imageWidth, imageHeight;
+ m_small_image_list->GetSize(image, imageWidth, imageHeight);
+
+ if ( imageHeight > m_lineHeight )
+ m_lineHeight = 0;
+ }
+ }
m_lines.Insert( line, id );
// if we don't have the header any longer, we need to relayout the window
// if ( !GetColumnCount() )
+
+ // Ensure that the non-existent columns are really removed from display.
+ Refresh();
+
return true;
}
wxListItem info;
info.m_text = label;
info.m_image = imageIndex;
- info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE;
+ info.m_mask = wxLIST_MASK_TEXT;
+ if (imageIndex > -1)
+ info.m_mask |= wxLIST_MASK_IMAGE;
info.m_itemId = index;
return InsertItem( info );
}