Added wxNonOwnedWindow::SetShape(wxGraphicsPath).
TODO: Document. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -39,7 +39,6 @@ class WXDLLIMPEXP_FWD_CORE wxToolBar;
|
||||
#define wxFRAME_NO_TASKBAR 0x0002 // No taskbar button (MSW only)
|
||||
#define wxFRAME_TOOL_WINDOW 0x0004 // No taskbar button, no system menu
|
||||
#define wxFRAME_FLOAT_ON_PARENT 0x0008 // Always above its parent
|
||||
#define wxFRAME_SHAPED 0x0010 // Create a window that is able to be shaped
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFrame is a top-level window with optional menubar, statusbar and toolbar
|
||||
|
@@ -11,6 +11,8 @@
|
||||
#ifndef _WX_GTK_NONOWNEDWND_H_
|
||||
#define _WX_GTK_NONOWNEDWND_H_
|
||||
|
||||
class wxNonOwnedWindowShapeImpl;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxNonOwnedWindow contains code common to wx{Popup,TopLevel}Window in wxGTK.
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -18,16 +20,23 @@
|
||||
class WXDLLIMPEXP_CORE wxNonOwnedWindow : public wxNonOwnedWindowBase
|
||||
{
|
||||
public:
|
||||
wxNonOwnedWindow() { }
|
||||
|
||||
virtual bool SetShape(const wxRegion& region);
|
||||
wxNonOwnedWindow() { m_shapeImpl = NULL; }
|
||||
virtual ~wxNonOwnedWindow();
|
||||
|
||||
// Overridden to actually set the shape when the window becomes realized.
|
||||
virtual void GTKHandleRealized();
|
||||
|
||||
protected:
|
||||
virtual bool DoClearShape();
|
||||
virtual bool DoSetRegionShape(const wxRegion& region);
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
virtual bool DoSetPathShape(const wxGraphicsPath& path);
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
|
||||
|
||||
private:
|
||||
// If valid, defines the custom shape of the window.
|
||||
wxRegion m_shape;
|
||||
// If non-NULL, contains information about custom window shape.
|
||||
wxNonOwnedWindowShapeImpl* m_shapeImpl;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxNonOwnedWindow);
|
||||
};
|
||||
|
@@ -11,6 +11,8 @@
|
||||
#ifndef _WX_MSW_NONOWNEDWND_H_
|
||||
#define _WX_MSW_NONOWNEDWND_H_
|
||||
|
||||
class wxNonOwnedWindowShapeImpl;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxNonOwnedWindow
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -18,7 +20,20 @@
|
||||
class WXDLLIMPEXP_CORE wxNonOwnedWindow : public wxNonOwnedWindowBase
|
||||
{
|
||||
public:
|
||||
virtual bool SetShape(const wxRegion& region);
|
||||
wxNonOwnedWindow();
|
||||
virtual ~wxNonOwnedWindow();
|
||||
|
||||
protected:
|
||||
virtual bool DoClearShape();
|
||||
virtual bool DoSetRegionShape(const wxRegion& region);
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
virtual bool DoSetPathShape(const wxGraphicsPath& path);
|
||||
|
||||
private:
|
||||
wxNonOwnedWindowShapeImpl* m_shapeImpl;
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxNonOwnedWindow);
|
||||
};
|
||||
|
||||
#endif // _WX_MSW_NONOWNEDWND_H_
|
||||
|
@@ -14,6 +14,11 @@
|
||||
|
||||
#include "wx/window.h"
|
||||
|
||||
// Styles that can be used with any wxNonOwnedWindow:
|
||||
#define wxFRAME_SHAPED 0x0010 // Create a window that is able to be shaped
|
||||
|
||||
class WXDLLIMPEXP_FWD_CORE wxGraphicsPath;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxNonOwnedWindow: a window that is not a child window of another one.
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -24,8 +29,52 @@ public:
|
||||
// Set the shape of the window to the given region.
|
||||
// Returns true if the platform supports this feature (and the
|
||||
// operation is successful.)
|
||||
virtual bool SetShape(const wxRegion& WXUNUSED(region)) { return false; }
|
||||
bool SetShape(const wxRegion& region)
|
||||
{
|
||||
// This style is in fact only needed by wxOSX/Carbon so once we don't
|
||||
// use this port any more, we could get rid of this requirement, but
|
||||
// for now you must specify wxFRAME_SHAPED for SetShape() to work on
|
||||
// all platforms.
|
||||
wxCHECK_MSG
|
||||
(
|
||||
HasFlag(wxFRAME_SHAPED), false,
|
||||
wxS("Shaped windows must be created with the wxFRAME_SHAPED style.")
|
||||
);
|
||||
|
||||
return region.IsEmpty() ? DoClearShape() : DoSetRegionShape(region);
|
||||
}
|
||||
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
// Set the shape using the specified path.
|
||||
bool SetShape(const wxGraphicsPath& path)
|
||||
{
|
||||
wxCHECK_MSG
|
||||
(
|
||||
HasFlag(wxFRAME_SHAPED), false,
|
||||
wxS("Shaped windows must be created with the wxFRAME_SHAPED style.")
|
||||
);
|
||||
|
||||
return DoSetPathShape(path);
|
||||
}
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
|
||||
protected:
|
||||
virtual bool DoClearShape()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool DoSetRegionShape(const wxRegion& WXUNUSED(region))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
virtual bool DoSetPathShape(const wxGraphicsPath& WXUNUSED(path))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
};
|
||||
|
||||
#if defined(__WXDFB__)
|
||||
|
@@ -14,6 +14,8 @@
|
||||
|
||||
#include "wx/window.h"
|
||||
|
||||
#include "wx/graphics.h"
|
||||
|
||||
#if wxUSE_SYSTEM_OPTIONS
|
||||
#define wxMAC_WINDOW_PLAIN_TRANSITION wxT("mac.window-plain-transition")
|
||||
#endif
|
||||
@@ -82,6 +84,10 @@ public:
|
||||
virtual bool SetShape(const wxRegion& region);
|
||||
const wxRegion& GetShape() const { return m_shape; }
|
||||
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
const wxGraphicsPath& GetShapePath() { return m_shapePath; }
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
|
||||
// activation hooks only necessary for MDI Implementation
|
||||
static void MacDelayedDeactivation(long timestamp);
|
||||
virtual void MacActivate( long timestamp , bool inIsActivating ) ;
|
||||
@@ -125,6 +131,12 @@ protected:
|
||||
wxShowEffect effect,
|
||||
unsigned timeout);
|
||||
|
||||
virtual bool DoClearShape();
|
||||
virtual bool DoSetRegionShape(const wxRegion& region);
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
virtual bool DoSetPathShape(const wxGraphicsPath& path);
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
|
||||
virtual void WillBeDestroyed();
|
||||
|
||||
wxNonOwnedWindowImpl* m_nowpeer ;
|
||||
@@ -135,6 +147,9 @@ protected:
|
||||
|
||||
private :
|
||||
wxRegion m_shape;
|
||||
#if wxUSE_GRAPHICS_CONTEXT
|
||||
wxGraphicsPath m_shapePath;
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
};
|
||||
|
||||
// list of all frames and modeless dialogs
|
||||
|
Reference in New Issue
Block a user