X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3b3ca9beb8e148a28ce619af99560af2f5e627df..1a8372ba0f655f8f9fec7d942f9665fcb458903c:/samples/shaped/shaped.cpp?ds=inline diff --git a/samples/shaped/shaped.cpp b/samples/shaped/shaped.cpp index 7914ddc47f..a79b97abbf 100644 --- a/samples/shaped/shaped.cpp +++ b/samples/shaped/shaped.cpp @@ -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(); }