m_dc = NULL;
m_align = align;
m_mode = mode;
+ m_wantsAttr = false;
+ m_hasAttr = false;
}
wxDataViewRenderer::~wxDataViewRenderer()
return wxSize(80,20);
}
+// ---------------------------------------------------------
+// wxDataViewTextRendererAttr
+// ---------------------------------------------------------
+
+IMPLEMENT_CLASS(wxDataViewTextRendererAttr, wxDataViewTextRenderer)
+
+wxDataViewTextRendererAttr::wxDataViewTextRendererAttr( const wxString &varianttype,
+ wxDataViewCellMode mode, int align ) :
+ wxDataViewTextRenderer( varianttype, mode, align )
+{
+ m_wantsAttr = true;
+}
+
+bool wxDataViewTextRendererAttr::Render( wxRect cell, wxDC *dc, int WXUNUSED(state) )
+{
+ wxFont font;
+ wxColour colour;
+
+ if (m_hasAttr)
+ {
+ if (m_attr.HasColour())
+ {
+ colour = dc->GetTextForeground();
+ dc->SetTextForeground( m_attr.GetColour() );
+ }
+
+ if (m_attr.GetBold() || m_attr.GetItalic())
+ {
+ font = dc->GetFont();
+ wxFont myfont = font;
+ if (m_attr.GetBold())
+ myfont.SetWeight( wxFONTWEIGHT_BOLD );
+ if (m_attr.GetItalic())
+ myfont.SetStyle( wxFONTSTYLE_ITALIC );
+ dc->SetFont( myfont );
+ }
+ }
+
+ dc->DrawText( m_text, cell.x, cell.y + ((cell.height - dc->GetCharHeight()) / 2));
+
+ // restore dc
+ if (m_hasAttr)
+ {
+ if (m_attr.HasColour())
+ dc->SetTextForeground( colour );
+
+ if (m_attr.GetBold() || m_attr.GetItalic())
+ dc->SetFont( font );
+ }
+
+ return true;
+}
+
+
// ---------------------------------------------------------
// wxDataViewBitmapRenderer
// ---------------------------------------------------------
#if defined(__WXMSW__) && USE_NATIVE_HEADER_WINDOW
+#ifndef HDS_DRAGDROP
+ #define HDS_DRAGDROP 0x0040
+#endif
+#ifndef HDS_FULLDRAG
+ #define HDS_FULLDRAG 0x0080
+#endif
+
// implemented in msw/listctrl.cpp:
int WXDLLIMPEXP_CORE wxMSWGetColumnClicked(NMHDR *nmhdr, POINT *ptClick);
m_owner = parent;
m_scrollOffsetX = 0;
- m_buttonHeight = wxRendererNative::Get().GetHeaderButtonHeight( this );
+ m_buttonHeight = wxRendererNative::Get().GetHeaderButtonHeight( this ) + 10;
int x = pos.x == wxDefaultCoord ? 0 : pos.x,
y = pos.y == wxDefaultCoord ? 0 : pos.y,
// create the native WC_HEADER window:
WXHWND hwndParent = (HWND)parent->GetHandle();
- WXDWORD msStyle = WS_CHILD | HDS_BUTTONS | HDS_HORZ | HDS_HOTTRACK | HDS_FULLDRAG;
+ WXDWORD msStyle = WS_CHILD | HDS_DRAGDROP | HDS_BUTTONS | HDS_HORZ | HDS_HOTTRACK | HDS_FULLDRAG;
if ( m_isShown )
msStyle |= WS_VISIBLE;
return wxSize(80, m_buttonHeight );
}
-#ifndef HDF_SORTUP
-#define HDF_SORTUP 0x0400
-#endif
-#ifndef HDF_SORTDOWN
-#define HDF_SORTDOWN 0x0200
-#endif
-
void wxDataViewHeaderWindowMSW::UpdateDisplay()
{
// remove old columns
default:
// such alignment is not allowed for the column header!
- wxFAIL;
+ break; // wxFAIL;
}
SendMessage((HWND)m_hWnd, HDM_INSERTITEM,
return true;
}
-void wxDataViewHeaderWindowMSW::ScrollWindow(int dx, int dy, const wxRect *rect )
+void wxDataViewHeaderWindowMSW::ScrollWindow(int dx, int WXUNUSED(dy),
+ const wxRect * WXUNUSED(rect))
{
m_scrollOffsetX += dx;
int f)
{
// TODO: why is there a border + 2px around it?
- wxControl::DoSetSize( x+m_scrollOffsetX-2, y-2, w-m_scrollOffsetX+4, h+4, f );
+ wxControl::DoSetSize( x+m_scrollOffsetX+1, y+1, w-m_scrollOffsetX-2, h-2, f );
}
#else // !defined(__WXMSW__)
model->GetValue( value, dataitem, col->GetModelColumn());
cell->SetValue( value );
+
+ if (cell->GetWantsAttr())
+ {
+ wxDataViewItemAttr attr;
+ bool ret = model->GetAttr( dataitem, col->GetModelColumn(), attr );
+ if (ret)
+ cell->SetAttr( attr );
+ cell->SetHasAttr( ret );
+ }
// update the y offset
cell_rect.y = item * m_lineHeight;
bool wxDataViewCtrl::DeleteColumn( wxDataViewColumn *column )
{
wxDataViewColumnList::compatibility_iterator ret = m_cols.Find( column );
- if (ret == NULL)
+ if (!ret)
return false;
m_cols.Erase(ret);