#include "wx/dcscreen.h"
#include "wx/math.h"
#include "wx/settings.h"
+ #include "wx/sizer.h"
#endif
#include "wx/imaglist.h"
#else
static const int EXTRA_WIDTH = 4;
#endif
+
+#ifdef __WXGTK__
+static const int EXTRA_HEIGHT = 6;
+#else
static const int EXTRA_HEIGHT = 4;
+#endif
// margin between the window and the items
static const int EXTRA_BORDER_X = 2;
bool m_sendSetColumnWidth;
int m_colToSend;
int m_widthToSend;
-
+
virtual void OnInternalIdle();
private:
void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
{
wxGenericListCtrl *parent = m_owner->GetListCtrl();
-
+
wxPaintDC dc( this );
AdjustDC( dc );
void wxListHeaderWindow::OnInternalIdle()
{
wxWindow::OnInternalIdle();
-
+
if (m_sendSetColumnWidth)
{
m_owner->SetColumnWidth( m_colToSend, m_widthToSend );
void wxListHeaderWindow::OnMouse( wxMouseEvent &event )
{
wxGenericListCtrl *parent = m_owner->GetListCtrl();
-
+
// we want to work with logical coords
int x;
parent->CalcUnscrolledPosition(event.GetX(), 0, &x, NULL);
parent->GetEventHandler()->ProcessEvent( le );
}
- // propagate the char event upwards
- wxKeyEvent ke(event);
- ke.SetEventObject( parent );
- if (parent->GetEventHandler()->ProcessEvent( ke ))
- return;
+ if ( (event.GetKeyCode() != WXK_UP) &&
+ (event.GetKeyCode() != WXK_DOWN) &&
+ (event.GetKeyCode() != WXK_RIGHT) &&
+ (event.GetKeyCode() != WXK_LEFT) &&
+ (event.GetKeyCode() != WXK_PAGEUP) &&
+ (event.GetKeyCode() != WXK_PAGEDOWN) &&
+ (event.GetKeyCode() != WXK_END) &&
+ (event.GetKeyCode() != WXK_HOME) )
+ {
+ // propagate the char event upwards
+ wxKeyEvent ke(event);
+ ke.SetEventObject( parent );
+ if (parent->GetEventHandler()->ProcessEvent( ke ))
+ return;
+ }
if ( HandleAsNavigationKey(event) )
return;
wxCHECK_RET( InReportView(),
_T("SetColumnWidth() can only be called in report mode.") );
-
+
m_dirty = true;
wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin;
// sorting
// ----------------------------------------------------------------------------
-wxListCtrlCompare list_ctrl_compare_func_2;
-long list_ctrl_compare_data;
+static wxListCtrlCompare list_ctrl_compare_func_2;
+static long list_ctrl_compare_data;
int LINKAGEMODE list_ctrl_compare_func_1( wxListLineData **arg1, wxListLineData **arg2 )
{
void wxListMainWindow::OnScroll(wxScrollWinEvent& event)
{
- wxPrintf( "wxListMainWindow::OnScroll\n" );
-
- // HandleOnScroll( event );
-
// update our idea of which lines are shown when we redraw the window the
// next time
ResetVisibleLinesRange();
{
bool needs_header = HasHeader();
bool has_header = (m_headerWin != NULL);
-
+
if (needs_header == has_header)
return;
wxSize(GetClientSize().x, m_headerHeight),
wxTAB_TRAVERSAL
);
-
+
#if defined( __WXMAC__ ) && wxOSX_USE_COCOA_OR_CARBON
wxFont font;
#if wxOSX_USE_ATSU_TEXT
#endif
m_headerWin->SetFont( font );
#endif
-
+
GetSizer()->Prepend( m_headerWin, 0, wxGROW );
}
else
{
GetSizer()->Detach( m_headerWin );
-
+
delete m_headerWin;
-
+
m_headerWin = NULL;
}
}
if ( !wxControl::Create( parent, id, pos, size, style|wxVSCROLL|wxHSCROLL, validator, name ) )
return false;
+#ifdef __WXGTK__
+ style &= ~wxBORDER_MASK;
+ style |= wxBORDER_THEME;
+#endif
m_mainWin = new wxListMainWindow( this, wxID_ANY, wxPoint(0, 0), size, style );
SetTargetWindow( m_mainWin );
-
+
wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL );
sizer->Add( m_mainWin, 1, wxGROW );
SetSizer( sizer );
-
+
CreateOrDestroyHeaderWindowAsNeeded();
SetInitialSize(size);
// m_mainWin->DeleteEverything(); wxMSW doesn't do that
CreateOrDestroyHeaderWindowAsNeeded();
-
+
GetSizer()->Layout();
}
// if we don't have the header any longer, we need to relayout the window
// if ( !GetColumnCount() )
-
+
return true;
}
Layout();
m_mainWin->RecalculatePositions();
-
+
AdjustScrollbars();
}