X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/58a9336be1b98cc420ec66a7f792d7f1c0b4eb55..67d947ba89b176c05c7707f44e4381bdef0f21c8:/samples/dnd/dnd.cpp diff --git a/samples/dnd/dnd.cpp b/samples/dnd/dnd.cpp index 5eaf9b4f39..7788cfdc7d 100644 --- a/samples/dnd/dnd.cpp +++ b/samples/dnd/dnd.cpp @@ -54,7 +54,7 @@ #include "wx/metafile.h" #endif // Windows -#if defined(__WXGTK__) || defined(__WXMOTIF__) +#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__) #include "mondrian.xpm" #include "dnd_copy.xpm" @@ -224,6 +224,7 @@ public: ~DnDFrame(); void OnPaint(wxPaintEvent& event); + void OnSize(wxSizeEvent& event); void OnQuit (wxCommandEvent& event); void OnAbout(wxCommandEvent& event); void OnDrag (wxCommandEvent& event); @@ -331,9 +332,10 @@ public: } protected: + //get a point 1 up and 1 left, otherwise the mid-point of a triangle is on the line wxPoint GetCentre() const - { return wxPoint(m_pos.x + m_size.x / 2, m_pos.y + m_size.y / 2); } - + { return wxPoint(m_pos.x + m_size.x / 2 - 1, m_pos.y + m_size.y / 2 - 1); } + struct ShapeDump { int x, y, // position @@ -378,9 +380,9 @@ public: dc.DrawLine(p2, p3); dc.DrawLine(p3, p1); -#ifdef __WXMSW__ + //works in multicolor modes; on GTK (at least) will fail in 16-bit color + dc.SetBrush(wxBrush(m_col, wxSOLID)); dc.FloodFill(GetCentre(), m_col, wxFLOOD_BORDER); -#endif } }; @@ -415,9 +417,8 @@ public: dc.DrawLine(p3, p4); dc.DrawLine(p4, p1); -#ifdef __WXMSW__ + dc.SetBrush(wxBrush(m_col, wxSOLID)); dc.FloodFill(GetCentre(), m_col, wxFLOOD_BORDER); -#endif } }; @@ -444,9 +445,8 @@ public: dc.DrawEllipse(m_pos, m_size); -#ifdef __WXMSW__ + dc.SetBrush(wxBrush(m_col, wxSOLID)); dc.FloodFill(GetCentre(), m_col, wxFLOOD_BORDER); -#endif } }; @@ -816,6 +816,7 @@ BEGIN_EVENT_TABLE(DnDFrame, wxFrame) EVT_LEFT_DOWN( DnDFrame::OnLeftDown) EVT_RIGHT_DOWN( DnDFrame::OnRightDown) EVT_PAINT( DnDFrame::OnPaint) + EVT_SIZE( DnDFrame::OnSize) END_EVENT_TABLE() BEGIN_EVENT_TABLE(DnDShapeFrame, wxFrame) @@ -1009,6 +1010,13 @@ void DnDFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) Close(TRUE); } +void DnDFrame::OnSize(wxSizeEvent& event) +{ + Refresh(); + + event.Skip(); +} + void DnDFrame::OnPaint(wxPaintEvent& WXUNUSED(event)) { int w = 0; @@ -1016,6 +1024,7 @@ void DnDFrame::OnPaint(wxPaintEvent& WXUNUSED(event)) GetClientSize( &w, &h ); wxPaintDC dc(this); + dc.Clear(); dc.SetFont( wxFont( 24, wxDECORATIVE, wxNORMAL, wxNORMAL, FALSE, "charter" ) ); dc.DrawText( "Drag text from here!", 100, h-50 ); } @@ -1207,7 +1216,7 @@ void DnDFrame::OnCopyBitmap(wxCommandEvent& WXUNUSED(event)) wxLogStatus( _T("Decoding image file...") ); wxYield(); - wxBitmap bitmap( image.ConvertToBitmap() ); + wxBitmap bitmap( image ); if ( !wxTheClipboard->Open() ) {