]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/dnd/dnd.cpp
Added "metal" theme.
[wxWidgets.git] / samples / dnd / dnd.cpp
index 8dfad555fd3ab34475142efaf75e84dcb4961c6c..7788cfdc7dc568047e43aa5633156ada8090e1eb 100644 (file)
@@ -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)
@@ -931,17 +932,17 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
     help_menu->Append(Menu_About, "&About");
 
     wxMenu *clip_menu = new wxMenu;
-    clip_menu->Append(Menu_Copy, "&Copy text\tCtrl+C");
-    clip_menu->Append(Menu_Paste, "&Paste text\tCtrl+V");
+    clip_menu->Append(Menu_Copy, "&Copy text\tCtrl-C");
+    clip_menu->Append(Menu_Paste, "&Paste text\tCtrl-V");
     clip_menu->AppendSeparator();
-    clip_menu->Append(Menu_CopyBitmap, "Copy &bitmap\tAlt+C");
-    clip_menu->Append(Menu_PasteBitmap, "Paste b&itmap\tAlt+V");
+    clip_menu->Append(Menu_CopyBitmap, "Copy &bitmap\tCtrl-Shift-C");
+    clip_menu->Append(Menu_PasteBitmap, "Paste b&itmap\tCtrl-Shift-V");
 #ifdef USE_METAFILES
     clip_menu->AppendSeparator();
     clip_menu->Append(Menu_PasteMFile, "Paste &metafile\tCtrl-M");
 #endif // USE_METAFILES
     clip_menu->AppendSeparator();
-    clip_menu->Append(Menu_CopyFiles, "Copy &files\tCtrl+F");
+    clip_menu->Append(Menu_CopyFiles, "Copy &files\tCtrl-F");
 
     wxMenuBar *menu_bar = new wxMenuBar;
     menu_bar->Append(file_menu, "&File");
@@ -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() )
     {