m_owner = (wxListMainWindow *) NULL;
m_currentCursor = (wxCursor *) NULL;
m_resizeCursor = (wxCursor *) NULL;
- m_isDraging = FALSE;
+ m_isDragging = FALSE;
}
wxListHeaderWindow::wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner,
// m_currentCursor = wxSTANDARD_CURSOR;
m_currentCursor = (wxCursor *) NULL;
m_resizeCursor = new wxCursor( wxCURSOR_SIZEWE );
- m_isDraging = FALSE;
+ m_isDragging = FALSE;
+ SetBackgroundColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ) );
}
wxListHeaderWindow::~wxListHeaderWindow( void )
dc->SetPen( *wxBLACK_PEN );
dc->DrawLine( x+w-m_corner+1, y, x+w, y+h ); // right (outer)
- dc->DrawRectangle( x, y+h, w, 1 ); // bottom (outer)
+ dc->DrawRectangle( x, y+h, w+1, 1 ); // bottom (outer)
wxPen pen( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNSHADOW ), 1, wxSOLID );
m_owner->ClientToScreen( &x2, &y2 );
wxScreenDC dc;
- dc.SetLogicalFunction( wxXOR );
+ dc.SetLogicalFunction( wxINVERT );
dc.SetPen( wxPen( *wxBLACK, 2, wxSOLID ) );
dc.SetBrush( *wxTRANSPARENT_BRUSH );
{
int x = event.GetX();
int y = event.GetY();
- if (m_isDraging)
+ if (m_isDragging)
{
DrawCurrent();
if (event.ButtonUp())
{
ReleaseMouse();
- m_isDraging = FALSE;
+ m_isDragging = FALSE;
m_owner->SetColumnWidth( m_column, m_currentX-m_minX );
}
else
if (event.LeftDown() && hit_border)
{
- m_isDraging = TRUE;
+ m_isDragging = TRUE;
m_currentX = x;
DrawCurrent();
CaptureMouse();
EVT_SIZE (wxListMainWindow::OnSize)
EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse)
EVT_CHAR (wxListMainWindow::OnChar)
+ EVT_KEY_DOWN (wxListMainWindow::OnKeyDown)
EVT_SET_FOCUS (wxListMainWindow::OnSetFocus)
EVT_KILL_FOCUS (wxListMainWindow::OnKillFocus)
END_EVENT_TABLE()
long x = dc.DeviceToLogicalX( (long)event.GetX() );
long y = dc.DeviceToLogicalY( (long)event.GetY() );
- // Did we actually hit an item ?
+ /* Did we actually hit an item ? */
long hitResult = 0;
wxNode *node = m_lines.First();
wxListLineData *line = (wxListLineData *) NULL;
{
int y_s = m_yScroll*GetScrollPos( wxVERTICAL );
if ((y > y_s) && (y+h < y_s+h_p)) return;
- if (y-y_s < 5) Scroll( -1, (y-5-h_p/2)/m_yScroll );
- if (y+h+5 > y_s+h_p) Scroll( -1, (y+h-h_p/2+h+15)/m_yScroll );
+ if (y-y_s < 5) { Scroll( -1, (y-5-h_p/2)/m_yScroll ); Refresh(); }
+ if (y+h+5 > y_s+h_p) { Scroll( -1, (y+h-h_p/2+h+15)/m_yScroll); Refresh(); }
}
else
{
int x_s = m_xScroll*GetScrollPos( wxHORIZONTAL );
if ((x > x_s) && (x+w < x_s+w_p)) return;
- if (x-x_s < 5) Scroll( (x-5)/m_xScroll, -1 );
- if (x+w-5 > x_s+w_p) Scroll( (x+w-w_p+15)/m_xScroll, -1 );
+ if (x-x_s < 5) { Scroll( (x-5)/m_xScroll, -1 ); Refresh(); }
+ if (x+w-5 > x_s+w_p) { Scroll( (x+w-w_p+15)/m_xScroll, -1 ); Refresh(); }
}
}
UnfocusLine( oldCurrent );
}
+void wxListMainWindow::OnKeyDown( wxKeyEvent &event )
+{
+ wxWindow *parent = GetParent();
+
+ /* we propagate the key event up */
+ wxKeyEvent ke( wxEVT_KEY_DOWN );
+ ke.m_shiftDown = event.m_shiftDown;
+ ke.m_controlDown = event.m_controlDown;
+ ke.m_altDown = event.m_altDown;
+ ke.m_metaDown = event.m_metaDown;
+ ke.m_keyCode = event.m_keyCode;
+ ke.m_x = event.m_x;
+ ke.m_y = event.m_y;
+ ke.SetEventObject( parent );
+ if (parent->GetEventHandler()->ProcessEvent( ke )) return;
+
+ event.Skip();
+}
+
void wxListMainWindow::OnChar( wxKeyEvent &event )
{
- wxListEvent le( wxEVT_COMMAND_LIST_KEY_DOWN, GetParent()->GetId() );
- le.m_code = event.KeyCode();
- le.SetEventObject( GetParent() );
- GetParent()->GetEventHandler()->ProcessEvent( le );
+ wxWindow *parent = GetParent();
-/*
- if (event.KeyCode() == WXK_TAB)
- {
- if (event.ShiftDown())
- TravPrev( &event );
- else
- TravNext( &event );
- return;
- }
-*/
- if ( !m_current )
- {
- event.Skip();
- return;
- }
-
- switch (event.KeyCode())
- {
- case WXK_UP:
- {
- wxNode *node = m_lines.Member( m_current )->Previous();
- if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- break;
- }
- case WXK_DOWN:
- {
- wxNode *node = m_lines.Member( m_current )->Next();
- if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- break;
- }
- case WXK_END:
- {
- wxNode *node = m_lines.Last();
- OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- break;
- }
- case WXK_HOME:
- {
- wxNode *node = m_lines.First();
- OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- break;
- }
- case WXK_PRIOR:
- {
- int steps = 0;
- if (m_mode & wxLC_REPORT) { steps = m_visibleLines-1; }
- else
- {
- int pos = 0;
- wxNode *node = m_lines.First();
- for (;;) { if (m_current == (wxListLineData*)node->Data()) break; pos++; node = node->Next(); }
- steps = pos % m_visibleLines;
- }
- wxNode *node = m_lines.Member( m_current );
- for (int i = 0; i < steps; i++) if (node->Previous()) node = node->Previous();
- if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- break;
- }
- case WXK_NEXT:
- {
- int steps = 0;
- if (m_mode & wxLC_REPORT) { steps = m_visibleLines-1; }
- else
- {
- int pos = 0; wxNode *node = m_lines.First();
- for (;;) { if (m_current == (wxListLineData*)node->Data()) break; pos++; node = node->Next(); }
- steps = m_visibleLines-(pos % m_visibleLines)-1;
- }
- wxNode *node = m_lines.Member( m_current );
- for (int i = 0; i < steps; i++) if (node->Next()) node = node->Next();
- if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- break;
- }
- case WXK_LEFT:
- {
- if (!(m_mode & wxLC_REPORT))
- {
- wxNode *node = m_lines.Member( m_current );
- for (int i = 0; i <m_visibleLines; i++) if (node->Previous()) node = node->Previous();
- if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- }
- break;
- }
- case WXK_RIGHT:
- {
- if (!(m_mode & wxLC_REPORT))
- {
- wxNode *node = m_lines.Member( m_current );
- for (int i = 0; i <m_visibleLines; i++) if (node->Next()) node = node->Next();
- if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
- }
- break;
- }
- case WXK_SPACE:
- {
- m_current->ReverseHilight();
- RefreshLine( m_current );
- }
- break;
- case WXK_INSERT:
+ /* we send a list_key event up */
+ wxListEvent le( wxEVT_COMMAND_LIST_KEY_DOWN, GetParent()->GetId() );
+ le.m_code = event.KeyCode();
+ le.SetEventObject( parent );
+ parent->GetEventHandler()->ProcessEvent( le );
+
+ /* we propagate the char event up */
+ wxKeyEvent ke( wxEVT_CHAR );
+ ke.m_shiftDown = event.m_shiftDown;
+ ke.m_controlDown = event.m_controlDown;
+ ke.m_altDown = event.m_altDown;
+ ke.m_metaDown = event.m_metaDown;
+ ke.m_keyCode = event.m_keyCode;
+ ke.m_x = event.m_x;
+ ke.m_y = event.m_y;
+ ke.SetEventObject( parent );
+ if (parent->GetEventHandler()->ProcessEvent( ke )) return;
+
+ if (event.KeyCode() == WXK_TAB)
{
- if (!(m_mode & wxLC_SINGLE_SEL))
- {
- wxListLineData *oldCurrent = m_current;
- m_current->ReverseHilight();
- wxNode *node = m_lines.Member( m_current )->Next();
- if (node) m_current = (wxListLineData*)node->Data();
- MoveToFocus();
- RefreshLine( oldCurrent );
- RefreshLine( m_current );
- UnfocusLine( oldCurrent );
- FocusLine( m_current );
- }
+ wxNavigationKeyEvent nevent;
+ nevent.SetDirection( !event.ShiftDown() );
+ nevent.SetCurrentFocus( m_parent );
+ if (m_parent->GetEventHandler()->ProcessEvent( nevent )) return;
}
- break;
- case WXK_RETURN:
- case WXK_EXECUTE:
+
+ /* no item -> nothing to do */
+ if (!m_current)
{
- wxListEvent le( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, GetParent()->GetId() );
- le.SetEventObject( GetParent() );
- le.m_itemIndex = GetIndexOfLine( m_current );
- m_current->GetItem( 0, le.m_item );
- GetParent()->GetEventHandler()->ProcessEvent( le );
+ event.Skip();
+ return;
}
- break;
- default:
+
+ switch (event.KeyCode())
{
- event.Skip();
- return;
+ case WXK_UP:
+ {
+ wxNode *node = m_lines.Member( m_current )->Previous();
+ if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ break;
+ }
+ case WXK_DOWN:
+ {
+ wxNode *node = m_lines.Member( m_current )->Next();
+ if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ break;
+ }
+ case WXK_END:
+ {
+ wxNode *node = m_lines.Last();
+ OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ break;
+ }
+ case WXK_HOME:
+ {
+ wxNode *node = m_lines.First();
+ OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ break;
+ }
+ case WXK_PRIOR:
+ {
+ int steps = 0;
+ if (m_mode & wxLC_REPORT)
+ {
+ steps = m_visibleLines-1;
+ }
+ else
+ {
+ int pos = 0;
+ wxNode *node = m_lines.First();
+ for (;;) { if (m_current == (wxListLineData*)node->Data()) break; pos++; node = node->Next(); }
+ steps = pos % m_visibleLines;
+ }
+ wxNode *node = m_lines.Member( m_current );
+ for (int i = 0; i < steps; i++) if (node->Previous()) node = node->Previous();
+ if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ break;
+ }
+ case WXK_NEXT:
+ {
+ int steps = 0;
+ if (m_mode & wxLC_REPORT)
+ {
+ steps = m_visibleLines-1;
+ }
+ else
+ {
+ int pos = 0; wxNode *node = m_lines.First();
+ for (;;) { if (m_current == (wxListLineData*)node->Data()) break; pos++; node = node->Next(); }
+ steps = m_visibleLines-(pos % m_visibleLines)-1;
+ }
+ wxNode *node = m_lines.Member( m_current );
+ for (int i = 0; i < steps; i++) if (node->Next()) node = node->Next();
+ if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ break;
+ }
+ case WXK_LEFT:
+ {
+ if (!(m_mode & wxLC_REPORT))
+ {
+ wxNode *node = m_lines.Member( m_current );
+ for (int i = 0; i <m_visibleLines; i++) if (node->Previous()) node = node->Previous();
+ if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ }
+ break;
+ }
+ case WXK_RIGHT:
+ {
+ if (!(m_mode & wxLC_REPORT))
+ {
+ wxNode *node = m_lines.Member( m_current );
+ for (int i = 0; i <m_visibleLines; i++) if (node->Next()) node = node->Next();
+ if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() );
+ }
+ break;
+ }
+ case WXK_SPACE:
+ {
+ m_current->ReverseHilight();
+ RefreshLine( m_current );
+ break;
+ }
+ case WXK_INSERT:
+ {
+ if (!(m_mode & wxLC_SINGLE_SEL))
+ {
+ wxListLineData *oldCurrent = m_current;
+ m_current->ReverseHilight();
+ wxNode *node = m_lines.Member( m_current )->Next();
+ if (node) m_current = (wxListLineData*)node->Data();
+ MoveToFocus();
+ RefreshLine( oldCurrent );
+ RefreshLine( m_current );
+ UnfocusLine( oldCurrent );
+ FocusLine( m_current );
+ }
+ break;
+ }
+ case WXK_RETURN:
+ case WXK_EXECUTE:
+ {
+ wxListEvent le( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, GetParent()->GetId() );
+ le.SetEventObject( GetParent() );
+ le.m_itemIndex = GetIndexOfLine( m_current );
+ m_current->GetItem( 0, le.m_item );
+ GetParent()->GetEventHandler()->ProcessEvent( le );
+ break;
+ }
+ default:
+ {
+ event.Skip();
+ return;
+ }
}
- }
- m_usedKeys = TRUE;
+ m_usedKeys = TRUE;
}
void wxListMainWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) )
m_dirty = TRUE;
- wxNode *node = m_columns.Nth( col );
+ wxNode *node = (wxNode*) NULL;
+
+ if (width == wxLIST_AUTOSIZE_USEHEADER) width = 80;
+ if (width == wxLIST_AUTOSIZE)
+ {
+ wxClientDC dc(this);
+ dc.SetFont( GetFont() );
+ int max = 10;
+ node = m_lines.First();
+ while (node)
+ {
+ wxListLineData *line = (wxListLineData*)node->Data();
+ wxNode *n = line->m_items.Nth( col );
+ if (n)
+ {
+ wxListItemData *item = (wxListItemData*)n->Data();
+ int current = 0, ix = 0, iy = 0;
+ long lx = 0, ly = 0;
+ if (item->HasImage())
+ {
+ GetImageSize( item->GetImage(), ix, iy );
+ current = ix + 5;
+ }
+ if (item->HasText())
+ {
+ wxString str;
+ item->GetText( str );
+ dc.GetTextExtent( str, &lx, &ly );
+ current += lx;
+ }
+ if (current > max) max = current;
+ }
+ node = node->Next();
+ }
+ width = max+10;
+ }
+
+ node = m_columns.Nth( col );
if (node)
{
wxListHeaderData *column = (wxListHeaderData*)node->Data();
m_current = line;
FocusLine( m_current );
RefreshLine( m_current );
- RefreshLine( oldCurrent );
+ if (oldCurrent) RefreshLine( oldCurrent );
}
}
UnfocusLine( m_current );
m_current = line;
FocusLine( m_current );
- oldCurrent->Hilight( FALSE );
+ if (oldCurrent) oldCurrent->Hilight( FALSE );
RefreshLine( m_current );
- RefreshLine( oldCurrent );
+ if (oldCurrent) RefreshLine( oldCurrent );
}
bool on = state & wxLIST_STATE_SELECTED;
if (on != line->IsHilighted())
{
long ret = 0;
if (item > 0) ret = item;
+ if(ret >= GetItemCount()) return -1;
wxNode *node = m_lines.Nth( ret );
while (node)
{
void wxListMainWindow::DeleteColumn( int col )
{
wxCHECK_RET( col < (int)m_columns.GetCount(),
- "attempting to delete inexistent column in wxListView" );
+ _T("attempting to delete inexistent column in wxListView") );
m_dirty = TRUE;
wxNode *node = m_columns.Nth( col );
bool ret = wxControl::Create( parent, id, pos, size, s, name );
+#if wxUSE_VALIDATORS
SetValidator( validator );
+#endif
if (s & wxSUNKEN_BORDER) s -= wxSUNKEN_BORDER;
m_mainWin = new wxListMainWindow( this, -1, wxPoint(0,0), size, s );
- if (GetWindowStyleFlag() & wxLC_REPORT)
+ if (HasFlag(wxLC_REPORT))
m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin, wxPoint(0,0), wxSize(size.x,23), wxTAB_TRAVERSAL );
else
m_headerWin = (wxListHeaderWindow *) NULL;
+ SetBackgroundColour( *wxWHITE );
+
return ret;
}
void wxListCtrl::SetSingleStyle( long style, bool add )
{
- long flag = GetWindowStyleFlag();
+ long flag = GetWindowStyle();
if (add)
{
void wxListCtrl::SetWindowStyleFlag( long flag )
{
- m_mainWin->DeleteEverything();
+ if (m_mainWin)
+ {
+ m_mainWin->DeleteEverything();
- int width = 0;
- int height = 0;
- GetClientSize( &width, &height );
+ int width = 0;
+ int height = 0;
+ GetClientSize( &width, &height );
- m_mainWin->SetMode( flag );
+ m_mainWin->SetMode( flag );
- if (flag & wxLC_REPORT)
- {
- if (!(GetWindowStyleFlag() & wxLC_REPORT))
+ if (flag & wxLC_REPORT)
{
-// m_mainWin->SetSize( 0, 24, width, height-24 );
- if (!m_headerWin)
+ if (!HasFlag(wxLC_REPORT))
{
- m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin, wxPoint(0,0), wxSize(width,23), wxTAB_TRAVERSAL );
- }
- else
- {
-// m_headerWin->SetSize( 0, 0, width, 23 );
- m_headerWin->Show( TRUE );
+ if (!m_headerWin)
+ {
+ m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin,
+ wxPoint(0,0), wxSize(width,23), wxTAB_TRAVERSAL );
+ }
+ else
+ {
+ m_headerWin->Show( TRUE );
+ }
}
}
- }
- else
- {
- if (GetWindowStyleFlag() & wxLC_REPORT)
+ else
{
-// m_mainWin->SetSize( 0, 0, width, height );
- m_headerWin->Show( FALSE );
- }
+ if (HasFlag(wxLC_REPORT))
+ {
+ m_headerWin->Show( FALSE );
+ }
+ }
}
-
+
wxWindow::SetWindowStyleFlag( flag );
}
long wxListCtrl::InsertItem( long index, const wxString &label )
{
- wxListItem info;
- info.m_text = label;
- info.m_mask = wxLIST_MASK_TEXT;
- info.m_itemId = index;
- return InsertItem( info );
+ wxListItem info;
+ info.m_text = label;
+ info.m_mask = wxLIST_MASK_TEXT;
+ info.m_itemId = index;
+ return InsertItem( info );
}
long wxListCtrl::InsertItem( long index, int imageIndex )
{
- wxListItem info;
- info.m_mask = wxLIST_MASK_IMAGE;
- info.m_image = imageIndex;
- info.m_itemId = index;
- return InsertItem( info );
+ wxListItem info;
+ info.m_mask = wxLIST_MASK_IMAGE;
+ info.m_image = imageIndex;
+ info.m_itemId = index;
+ return InsertItem( info );
}
long wxListCtrl::InsertItem( long index, const wxString &label, int imageIndex )
{
- wxListItem info;
- info.m_text = label;
- info.m_image = imageIndex;
- info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE;
- info.m_itemId = index;
- return InsertItem( info );
+ wxListItem info;
+ info.m_text = label;
+ info.m_image = imageIndex;
+ info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE;
+ info.m_itemId = index;
+ return InsertItem( info );
}
long wxListCtrl::InsertColumn( long col, wxListItem &item )
{
- m_mainWin->InsertColumn( col, item );
- return 0;
+ m_mainWin->InsertColumn( col, item );
+ return 0;
}
long wxListCtrl::InsertColumn( long col, const wxString &heading,
int format, int width )
{
- wxListItem item;
- item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT;
- item.m_text = heading;
- if (width >= -2)
- {
- item.m_mask |= wxLIST_MASK_WIDTH;
- item.m_width = width;
- }
-;
- item.m_format = format;
+ wxListItem item;
+ item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT;
+ item.m_text = heading;
+ if (width >= -2)
+ {
+ item.m_mask |= wxLIST_MASK_WIDTH;
+ item.m_width = width;
+ }
+ item.m_format = format;
- return InsertColumn( col, item );
+ return InsertColumn( col, item );
}
bool wxListCtrl::ScrollList( int WXUNUSED(dx), int WXUNUSED(dy) )
{
- return 0;
+ return 0;
}
// Sort items.
bool wxListCtrl::SortItems( wxListCtrlCompare fn, long data )
{
- m_mainWin->SortItems( fn, data );
- return TRUE;
+ m_mainWin->SortItems( fn, data );
+ return TRUE;
}
void wxListCtrl::OnIdle( wxIdleEvent &WXUNUSED(event) )
{
- if (!m_mainWin->m_dirty) return;
+ if (!m_mainWin->m_dirty) return;
- int cw = 0;
- int ch = 0;
- GetClientSize( &cw, &ch );
+ int cw = 0;
+ int ch = 0;
+ GetClientSize( &cw, &ch );
- int x = 0;
- int y = 0;
- int w = 0;
- int h = 0;
+ int x = 0;
+ int y = 0;
+ int w = 0;
+ int h = 0;
- if (GetWindowStyleFlag() & wxLC_REPORT)
- {
- m_headerWin->GetPosition( &x, &y );
- m_headerWin->GetSize( &w, &h );
- if ((x != 0) || (y != 0) || (w != cw) || (h != 23))
- m_headerWin->SetSize( 0, 0, cw, 23 );
-
- m_mainWin->GetPosition( &x, &y );
- m_mainWin->GetSize( &w, &h );
- if ((x != 0) || (y != 24) || (w != cw) || (h != ch-24))
- m_mainWin->SetSize( 0, 24, cw, ch-24 );
- }
- else
- {
- m_mainWin->GetPosition( &x, &y );
- m_mainWin->GetSize( &w, &h );
- if ((x != 0) || (y != 24) || (w != cw) || (h != ch))
- m_mainWin->SetSize( 0, 0, cw, ch );
- }
+ if (HasFlag(wxLC_REPORT))
+ {
+ m_headerWin->GetPosition( &x, &y );
+ m_headerWin->GetSize( &w, &h );
+ if ((x != 0) || (y != 0) || (w != cw) || (h != 23))
+ m_headerWin->SetSize( 0, 0, cw, 23 );
- m_mainWin->CalculatePositions();
- m_mainWin->RealizeChanges();
- m_mainWin->m_dirty = FALSE;
- m_mainWin->Refresh();
+ m_mainWin->GetPosition( &x, &y );
+ m_mainWin->GetSize( &w, &h );
+ if ((x != 0) || (y != 24) || (w != cw) || (h != ch-24))
+ m_mainWin->SetSize( 0, 24, cw, ch-24 );
+ }
+ else
+ {
+ m_mainWin->GetPosition( &x, &y );
+ m_mainWin->GetSize( &w, &h );
+ if ((x != 0) || (y != 24) || (w != cw) || (h != ch))
+ m_mainWin->SetSize( 0, 0, cw, ch );
+ }
+
+ m_mainWin->CalculatePositions();
+ m_mainWin->RealizeChanges();
+ m_mainWin->m_dirty = FALSE;
+ m_mainWin->Refresh();
}
-void wxListCtrl::SetBackgroundColour( const wxColour &colour )
+bool wxListCtrl::SetBackgroundColour( const wxColour &colour )
{
- if (m_mainWin)
- {
- m_mainWin->SetBackgroundColour( colour );
- m_mainWin->m_dirty = TRUE;
- }
- if (m_headerWin)
- m_headerWin->SetBackgroundColour( colour );
+ if ( !wxWindow::SetBackgroundColour( colour ) )
+ return FALSE;
+
+ if (m_mainWin)
+ {
+ m_mainWin->SetBackgroundColour( colour );
+ m_mainWin->m_dirty = TRUE;
+ }
+
+ if (m_headerWin)
+ {
+// m_headerWin->SetBackgroundColour( colour );
+ }
+
+ return TRUE;
}
-void wxListCtrl::SetForegroundColour( const wxColour &colour )
+bool wxListCtrl::SetForegroundColour( const wxColour &colour )
{
- if (m_mainWin)
- {
- m_mainWin->SetForegroundColour( colour );
- m_mainWin->m_dirty = TRUE;
- }
- if (m_headerWin)
- m_headerWin->SetForegroundColour( colour );
+ if ( !wxWindow::SetForegroundColour( colour ) )
+ return FALSE;
+
+ if (m_mainWin)
+ {
+ m_mainWin->SetForegroundColour( colour );
+ m_mainWin->m_dirty = TRUE;
+ }
+
+ if (m_headerWin)
+ {
+ m_headerWin->SetForegroundColour( colour );
+ }
+
+ return TRUE;
}
-void wxListCtrl::SetFont( const wxFont &font )
+bool wxListCtrl::SetFont( const wxFont &font )
{
- if (m_mainWin)
- {
- m_mainWin->SetFont( font );
- m_mainWin->m_dirty = TRUE;
- }
- if (m_headerWin)
- m_headerWin->SetFont( font );
+ if ( !wxWindow::SetFont( font ) )
+ return FALSE;
+
+ if (m_mainWin)
+ {
+ m_mainWin->SetFont( font );
+ m_mainWin->m_dirty = TRUE;
+ }
+
+ if (m_headerWin)
+ {
+ m_headerWin->SetFont( font );
+ }
+
+ return TRUE;
}