// Purpose: generic wxHeaderCtrl implementation
// Author: Vadim Zeitlin
// Created: 2008-12-03
-// RCS-ID: $Id$
// Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
namespace
{
-const unsigned NO_SORT = (unsigned)-1;
-
const unsigned COL_NONE = (unsigned)-1;
} // anonymous namespace
pos += col.GetWidth();
- // if the column is resizeable, check if we're approximatively over the
+ // if the column is resizable, check if we're approximatively over the
// line separating it from the next column
//
// TODO: don't hardcode sensitivity
dcover.Clear();
}
-void wxHeaderCtrl::UpdateResizingMarker(int xPhysical)
-{
- wxClientDC dc(this);
-
- wxDCOverlay dcover(m_overlay, &dc);
- dcover.Clear();
-
- // unfortunately drawing the marker over the parent window doesn't work as
- // it's usually covered by another window (the main control view) so just
- // draw the marker over the header itself, even if it makes it not very
- // useful
- dc.SetPen(*wxLIGHT_GREY_PEN);
- dc.DrawLine(xPhysical, 0, xPhysical, GetClientSize().y);
-}
-
void wxHeaderCtrl::EndDragging()
{
- ClearMarkers();
-
- m_overlay.Reset();
+ // We currently only use markers for reordering, not for resizing
+ if (IsReordering())
+ {
+ ClearMarkers();
+ m_overlay.Reset();
+ }
// don't use the special dragging cursor any more
SetCursor(wxNullCursor);
unsigned int& col = IsResizing() ? m_colBeingResized : m_colBeingReordered;
- wxHeaderCtrlEvent event(wxEVT_COMMAND_HEADER_DRAGGING_CANCELLED, GetId());
+ wxHeaderCtrlEvent event(wxEVT_HEADER_DRAGGING_CANCELLED, GetId());
event.SetEventObject(this);
event.SetColumn(col);
void wxHeaderCtrl::StartOrContinueResizing(unsigned int col, int xPhysical)
{
- wxHeaderCtrlEvent event(IsResizing() ? wxEVT_COMMAND_HEADER_RESIZING
- : wxEVT_COMMAND_HEADER_BEGIN_RESIZE,
+ wxHeaderCtrlEvent event(IsResizing() ? wxEVT_HEADER_RESIZING
+ : wxEVT_HEADER_BEGIN_RESIZE,
GetId());
event.SetEventObject(this);
event.SetColumn(col);
}
//else: we had already done the above when we started
- UpdateResizingMarker(xPhysical);
}
}
ReleaseMouse();
- wxHeaderCtrlEvent event(wxEVT_COMMAND_HEADER_END_RESIZE, GetId());
+ wxHeaderCtrlEvent event(wxEVT_HEADER_END_RESIZE, GetId());
event.SetEventObject(this);
event.SetColumn(m_colBeingResized);
event.SetWidth(ConstrainByMinWidth(m_colBeingResized, xPhysical));
void wxHeaderCtrl::StartReordering(unsigned int col, int xPhysical)
{
- wxHeaderCtrlEvent event(wxEVT_COMMAND_HEADER_BEGIN_REORDER, GetId());
+ wxHeaderCtrlEvent event(wxEVT_HEADER_BEGIN_REORDER, GetId());
event.SetEventObject(this);
event.SetColumn(col);
if ( colNew != colOld )
{
- wxHeaderCtrlEvent event(wxEVT_COMMAND_HEADER_END_REORDER, GetId());
+ wxHeaderCtrlEvent event(wxEVT_HEADER_END_REORDER, GetId());
event.SetEventObject(this);
event.SetColumn(colOld);
{
int w, h;
GetClientSize(&w, &h);
-
+
#ifdef __WXGTK__
// int vw;
// GetVirtualSize(&vw, NULL);
{
state = wxCONTROL_DISABLED;
}
-
+
if (i == 0)
state |= wxCONTROL_SPECIAL;
params.m_labelText = col.GetTitle();
params.m_labelBitmap = col.GetBitmap();
params.m_labelAlignment = col.GetAlignment();
-
+
#ifdef __WXGTK__
if (i == count-1)
{
// treat left double clicks on separator specially
if ( onSeparator && dblclk )
{
- evtType = wxEVT_COMMAND_HEADER_SEPARATOR_DCLICK;
+ evtType = wxEVT_HEADER_SEPARATOR_DCLICK;
}
else // not double click on separator
{
- evtType = click ? wxEVT_COMMAND_HEADER_CLICK
- : wxEVT_COMMAND_HEADER_DCLICK;
+ evtType = click ? wxEVT_HEADER_CLICK
+ : wxEVT_HEADER_DCLICK;
}
break;
case wxMOUSE_BTN_RIGHT:
- evtType = click ? wxEVT_COMMAND_HEADER_RIGHT_CLICK
- : wxEVT_COMMAND_HEADER_RIGHT_DCLICK;
+ evtType = click ? wxEVT_HEADER_RIGHT_CLICK
+ : wxEVT_HEADER_RIGHT_DCLICK;
break;
case wxMOUSE_BTN_MIDDLE:
- evtType = click ? wxEVT_COMMAND_HEADER_MIDDLE_CLICK
- : wxEVT_COMMAND_HEADER_MIDDLE_DCLICK;
+ evtType = click ? wxEVT_HEADER_MIDDLE_CLICK
+ : wxEVT_HEADER_MIDDLE_DCLICK;
break;
default: