From: Stefan Csomor Date: Mon, 6 Nov 2006 10:16:54 +0000 (+0000) Subject: add a source placeholder X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/14cd0443d97862d6dacac3c05ddf77cdef3f3d4e add a source placeholder git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/popupwin.cpp b/src/mac/carbon/popupwin.cpp new file mode 100755 index 0000000000..bd4fe547fa --- /dev/null +++ b/src/mac/carbon/popupwin.cpp @@ -0,0 +1,117 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: src/mac/popupwin.cpp +// Purpose: implements wxPopupWindow for wxMac +// Author: Stefan Csomor +// Modified by: +// Created: +// RCS-ID: $Id$ +// Copyright: (c) 2006 Stefan Csomor +// License: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// CAUTION : This is not functional yet + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#if wxUSE_POPUPWIN + +#ifndef WX_PRECOMP +#endif //WX_PRECOMP + +#include "wx/popupwin.h" + +#include "wx/mac/private.h" + +// ============================================================================ +// implementation +// ============================================================================ + +bool wxPopupWindow::Create(wxWindow *parent, int flags) +{ + // popup windows are created hidden by default + Hide(); + + return wxPopupWindowBase::Create(parent) && + wxWindow::Create(parent, wxID_ANY, + wxDefaultPosition, wxDefaultSize, + flags | wxPOPUP_WINDOW); +} + +void wxPopupWindow::DoGetPosition(int *x, int *y) const +{ + // the position of a "top level" window such as this should be in + // screen coordinates, not in the client ones which MSW gives us + // (because we are a child window) + wxPopupWindowBase::DoGetPosition(x, y); + + GetParent()->ClientToScreen(x, y); +} + +/* +WXDWORD wxPopupWindow::MSWGetStyle(long flags, WXDWORD *exstyle) const +{ + // we only honour the border flags, the others don't make sense for us + WXDWORD style = wxWindow::MSWGetStyle(flags & wxBORDER_MASK, exstyle); + + if ( exstyle ) + { + // a popup window floats on top of everything + *exstyle |= WS_EX_TOPMOST | WS_EX_TOOLWINDOW; + } + + return style; +} + +WXHWND wxPopupWindow::MSWGetParent() const +{ + // we must be a child of the desktop to be able to extend beyond the parent + // window client area (like the comboboxes drop downs do) + // + // NB: alternative implementation would be to use WS_POPUP instead of + // WS_CHILD but then showing a popup would deactivate the parent which + // is ugly and working around this, although possible, is even more + // ugly + // GetDesktopWindow() is not always supported on WinCE, and if + // it is, it often returns NULL. +#ifdef __WXWINCE__ + return 0; +#else + return (WXHWND)::GetDesktopWindow(); +#endif +} +*/ + +bool wxPopupWindow::Show(bool show) +{ + if ( !wxWindowMac::Show(show) ) + return false; +/* + if ( show ) + { + // raise to top of z order + if (!::SetWindowPos(GetHwnd(), HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)) + { + wxLogLastError(_T("SetWindowPos")); + } + + // and set it as the foreground window so the mouse can be captured + ::SetForegroundWindow(GetHwnd()); + } +*/ + return true; +} + +#endif // #if wxUSE_POPUPWIN