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()
{
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 )
{
wxWindow *parent = GetParent();
le.SetEventObject( parent );
parent->GetEventHandler()->ProcessEvent( le );
- /* we propagate the key event up */
- wxKeyEvent ke( wxEVT_KEY_DOWN );
+ /* 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;
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 );
}
int w = 0;
int h = 0;
- if (GetWindowStyleFlag() & wxLC_REPORT)
+ if (HasFlag(wxLC_REPORT))
{
m_headerWin->GetPosition( &x, &y );
m_headerWin->GetSize( &w, &h );
m_mainWin->Refresh();
}
-void wxListCtrl::SetBackgroundColour( const wxColour &colour )
+bool wxListCtrl::SetBackgroundColour( const wxColour &colour )
{
+ if ( !wxWindow::SetBackgroundColour( colour ) )
+ return FALSE;
+
if (m_mainWin)
{
m_mainWin->SetBackgroundColour( colour );
{
m_headerWin->SetBackgroundColour( colour );
}
+
+ return TRUE;
}
-void wxListCtrl::SetForegroundColour( const wxColour &colour )
+bool wxListCtrl::SetForegroundColour( const wxColour &colour )
{
+ if ( !wxWindow::SetForegroundColour( colour ) )
+ return FALSE;
+
if (m_mainWin)
{
m_mainWin->SetForegroundColour( colour );
{
m_headerWin->SetForegroundColour( colour );
}
+
+ return TRUE;
}
-void wxListCtrl::SetFont( const wxFont &font )
+bool wxListCtrl::SetFont( const wxFont &font )
{
+ if ( !wxWindow::SetFont( font ) )
+ return FALSE;
+
if (m_mainWin)
{
m_mainWin->SetFont( font );
{
m_headerWin->SetFont( font );
}
+
+ return TRUE;
}