]> git.saurik.com Git - wxWidgets.git/commitdiff
Make wxSTAY_ON_TOP and other window styles toggleable via SetWindowStyleFlag under...
authorKevin Ollivier <kevino@theolliviers.com>
Sun, 8 Nov 2009 03:03:06 +0000 (03:03 +0000)
committerKevin Ollivier <kevino@theolliviers.com>
Sun, 8 Nov 2009 03:03:06 +0000 (03:03 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/cocoa/private.h
include/wx/osx/core/private.h
include/wx/osx/nonownedwnd.h
src/osx/cocoa/nonownedwnd.mm
src/osx/nonownedwnd_osx.cpp

index 3473aadca9a18e6152c53096052fd0a1a2943d90..9a3e131a81bdc7067df8a72200861dada064ab14 100644 (file)
@@ -210,6 +210,7 @@ public :
     bool SetTransparent(wxByte alpha);
     bool SetBackgroundColour(const wxColour& col );
     void SetExtraStyle( long exStyle );
+    void SetWindowStyleFlag( long style );
     bool SetBackgroundStyle(wxBackgroundStyle style);
     bool CanSetTransparent();
 
index 9d3fbdb52f759ed4a7a7faa809ccd663c8dcc698..47c9179bf388eca7682fa4dd09c9e964751664c3 100644 (file)
@@ -685,7 +685,11 @@ public :
     virtual void SetExtraStyle( long WXUNUSED(exStyle) )
     {
     }
-
+    
+    virtual void SetWindowStyleFlag( long WXUNUSED(style) )
+    {
+    }
+    
     virtual bool SetBackgroundStyle(wxBackgroundStyle WXUNUSED(style))
     {
         return false ;
index e650d7e094e9470e9ed8f9f81f51ec51b77cdba6..cf537e15ec8b141b4f8a7c5663d458fbcc29b0d8 100644 (file)
@@ -80,6 +80,7 @@ public:
     static void MacDelayedDeactivation(long timestamp);
     virtual void MacActivate( long timestamp , bool inIsActivating ) ;
 
+    virtual void SetWindowStyleFlag(long flags);
 
     virtual void Raise();
     virtual void Lower();
index c19341742eea0e826179eb545a486e6e171f9baf..b0af31cc070e3306d1da6fc9994b8797849bce47 100644 (file)
@@ -533,6 +533,21 @@ void wxNonOwnedWindowCocoaImpl::SetExtraStyle( long exStyle )
     }
 }
 
+void wxNonOwnedWindowCocoaImpl::SetWindowStyleFlag( long style )
+{
+    if (m_macWindow)
+    {
+        CGWindowLevel level = kCGNormalWindowLevel;
+        
+        if (style & wxSTAY_ON_TOP)
+            level = kCGUtilityWindowLevel;
+        else if (( style & wxFRAME_FLOAT_ON_PARENT ) || ( style & wxFRAME_TOOL_WINDOW ))
+            level = kCGFloatingWindowLevel;
+        
+        [m_macWindow setLevel: level];
+    }
+}
+
 bool wxNonOwnedWindowCocoaImpl::SetBackgroundStyle(wxBackgroundStyle WXUNUSED(style))
 {
     return true;
index bdc9be1d32f0efb777e5ba90e9f5bd313160d46f..9adc5647d549121fb5de9ecb7435a6e629451920 100644 (file)
@@ -217,6 +217,17 @@ bool wxNonOwnedWindow::SetBackgroundColour(const wxColour& c )
     return true;
 }
 
+void wxNonOwnedWindow::SetWindowStyleFlag(long flags)
+{
+    if (flags == GetWindowStyleFlag())
+        return;
+        
+    wxWindow::SetWindowStyleFlag(flags);
+    
+    if (m_nowpeer)
+        m_nowpeer->SetWindowStyleFlag(flags);
+}
+
 // Raise the window to the top of the Z order
 void wxNonOwnedWindow::Raise()
 {