]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/shaped/shaped.cpp
reSWIGged
[wxWidgets.git] / samples / shaped / shaped.cpp
index 7914ddc47f267e90908eb0f22d9953084d724ec5..a79b97abbfc1d2ff8bcdf1498e701b2d3869e483 100644 (file)
@@ -39,6 +39,7 @@
     #include "wx/menu.h"
     #include "wx/layout.h"
     #include "wx/msgdlg.h"
+    #include "wx/image.h"
 #endif
 
 #include "wx/dcclient.h"
@@ -134,6 +135,7 @@ bool MyApp::OnInit()
     // Create the main application window
     ShapedFrame *frame = new ShapedFrame();
     frame->Show(TRUE);
+    SetTopWindow(frame);
 
     // success: wxApp::OnRun() will be called which will enter the main message
     // loop and the application will run. If we returned FALSE here, the
@@ -148,17 +150,28 @@ bool MyApp::OnInit()
 // frame constructor
 ShapedFrame::ShapedFrame()
        : wxFrame((wxFrame *)NULL, -1, wxEmptyString,
-                 wxDefaultPosition, wxDefaultSize,
-                 wxSIMPLE_BORDER | wxFRAME_NO_TASKBAR)
+                  wxDefaultPosition, wxSize(100, 100), //wxDefaultSize,
+                  0
+                  | wxFRAME_SHAPED
+                  | wxSIMPLE_BORDER
+                  | wxFRAME_NO_TASKBAR
+                  | wxSTAY_ON_TOP
+            )
 {
     m_hasShape = FALSE;
-    m_bmp = wxBitmap("star.png", wxBITMAP_TYPE_PNG);
+    m_bmp = wxBitmap(_T("star.png"), wxBITMAP_TYPE_PNG);
     SetSize(wxSize(m_bmp.GetWidth(), m_bmp.GetHeight()));
+#ifndef __WXMAC__
+    // On wxMac the tooltip gets clipped by the window shape, YUCK!!
+#if wxUSE_TOOLTOP
     SetToolTip(wxT("Right-click to exit"));
-#ifdef __WXMSW__
+#endif
+#endif
+#ifndef __WXGTK__
     // On wxGTK we can't do this yet because the window hasn't been created
-    // yet so we wait until the EVT_WINDOW_CREATE event happens.  On wxMSW it
-    // has been created so we set the shape now.
+    // yet so we wait until the EVT_WINDOW_CREATE event happens.  On wxMSW and
+    // wxMac the window has been created at this point so we go ahead and set
+    // the shape now.
     SetWindowShape();
 #endif
 }
@@ -169,7 +182,7 @@ void ShapedFrame::SetWindowShape()
     m_hasShape = SetShape(region);
 }
 
-void ShapedFrame::OnDoubleClick(wxMouseEvent& evt)
+void ShapedFrame::OnDoubleClick(wxMouseEvent& WXUNUSED(evt))
 {
     if (m_hasShape)
     {
@@ -184,6 +197,7 @@ void ShapedFrame::OnDoubleClick(wxMouseEvent& evt)
 void ShapedFrame::OnLeftDown(wxMouseEvent& evt)
 {
     CaptureMouse();
+    //printf("Mouse captured\n");
     wxPoint pos = ClientToScreen(evt.GetPosition());
     wxPoint origin = GetPosition();
     int dx =  pos.x - origin.x;
@@ -191,33 +205,38 @@ void ShapedFrame::OnLeftDown(wxMouseEvent& evt)
     m_delta = wxPoint(dx, dy);
 }
 
-void ShapedFrame::OnLeftUp(wxMouseEvent& evt)
+void ShapedFrame::OnLeftUp(wxMouseEvent& WXUNUSED(evt))
 {
     if (HasCapture())
+    {
         ReleaseMouse();
+        //printf("Mouse released\n");
+    }
 }
 
 void ShapedFrame::OnMouseMove(wxMouseEvent& evt)
 {
+    wxPoint pt = evt.GetPosition();
+    //printf("x:%d   y:%d\n", pt.x, pt.y);
     if (evt.Dragging() && evt.LeftIsDown())
     {
-        wxPoint pos = ClientToScreen(evt.GetPosition());
+        wxPoint pos = ClientToScreen(pt);
         Move(wxPoint(pos.x - m_delta.x, pos.y - m_delta.y));
     }
 }
 
-void ShapedFrame::OnExit(wxMouseEvent& evt)
+void ShapedFrame::OnExit(wxMouseEvent& WXUNUSED(evt))
 {
     Close();
 }
 
-void ShapedFrame::OnPaint(wxPaintEvent& evt)
+void ShapedFrame::OnPaint(wxPaintEvent& WXUNUSED(evt))
 {
     wxPaintDC dc(this);
     dc.DrawBitmap(m_bmp, 0, 0, TRUE);
 }
 
-void ShapedFrame::OnWindowCreate(wxWindowCreateEvent& evt)
+void ShapedFrame::OnWindowCreate(wxWindowCreateEvent& WXUNUSED(evt))
 {
     SetWindowShape();
 }