]> git.saurik.com Git - wxWidgets.git/commitdiff
Added MacInternalOnSize() to allow windows to resize themselves independently of...
authorJulian Smart <julian@anthemion.co.uk>
Thu, 1 Mar 2012 15:04:42 +0000 (15:04 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Thu, 1 Mar 2012 15:04:42 +0000 (15:04 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70765 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/frame.h
include/wx/osx/window.h
src/osx/carbon/frame.cpp
src/osx/cocoa/toolbar.mm
src/osx/cocoa/window.mm
src/osx/nonownedwnd_osx.cpp
src/osx/window_osx.cpp

index 21693f7cfc0b17a92f5a0bebf6f93780da20f8e5..eaea567261999902f4fb3683147bd9ce9cfe2df4 100644 (file)
@@ -59,7 +59,6 @@ public:
     // event handlers
     void OnActivate(wxActivateEvent& event);
     void OnSysColourChanged(wxSysColourChangedEvent& event);
-    void OnSize(wxSizeEvent& event);
 
     // Toolbar
 #if wxUSE_TOOLBAR
@@ -84,6 +83,8 @@ public:
 
     void PositionBars();
 
+    // internal response to size events
+    virtual void MacOnInternalSize() { PositionBars(); }
 
 protected:
     // common part of all ctors
index 2114cb7b68324a6ae6867559247842ebf4ba0ca1..757455f81332f9cf1d23b230e038f8c3b4d908e9 100644 (file)
@@ -288,6 +288,9 @@ public:
     
     float               GetContentScaleFactor() const ;
     
+    // internal response to size events
+    virtual void MacOnInternalSize() {}
+
 protected:
     // For controls like radio buttons which are genuinely composite
     wxList              m_subControls;
index e7c53a27aa149c341f1771adda73b4985fbb7f8f..2c9e0f39264e072dda82723fa3612448f1754fa4 100644 (file)
@@ -29,7 +29,6 @@
 BEGIN_EVENT_TABLE(wxFrame, wxFrameBase)
   EVT_ACTIVATE(wxFrame::OnActivate)
   EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged)
-  EVT_SIZE(wxFrame::OnSize)
 END_EVENT_TABLE()
 
 #define WX_MAC_STATUSBAR_HEIGHT 18
@@ -216,14 +215,6 @@ void wxFrame::OnActivate(wxActivateEvent& event)
     }
 }
 
-
-void wxFrame::OnSize(wxSizeEvent& event)
-{
-    PositionBars();
-    
-    event.Skip();
-}
-
 #if wxUSE_MENUS
 void wxFrame::DetachMenuBar()
 {
index a253e011aa3a11dd49d544448b277117e69730ec..d5d0256f458bfa6335d0a929a589f261ae41e2f0 100644 (file)
@@ -1193,6 +1193,9 @@ bool wxToolBar::Realize()
     SetInitialSize( wxSize(m_minWidth, m_minHeight));
 
     SendSizeEventToParent();
+    wxWindow * const parent = GetParent();
+    if ( parent && !parent->IsBeingDeleted() )
+        parent->MacOnInternalSize();
     
     return true;
 }
index 048117a2cd6df9cdec8f4a9063df3fa48d8a8c83..bab18f2386607adf232641896da4b590a81c3c38 100644 (file)
@@ -1615,6 +1615,7 @@ void wxWidgetCocoaImpl::SetVisibility( bool visible )
     wxUnusedVar(progress);
 
     m_win->SendSizeEvent();
+    m_win->MacOnInternalSize();
 }
 
 - (void)animationDidEnd:(NSAnimation*)animation
@@ -1791,6 +1792,7 @@ wxWidgetCocoaImpl::ShowViewOrWindowWithEffect(wxWindow *win,
         // refresh it once again after the end to ensure that everything is in
         // place
         win->SendSizeEvent();
+        win->MacOnInternalSize();
     }
 
     [anim setDelegate:nil];
index feea6b5d9ed779ba49270df50363ae4b22ec351a..10daf9d052677b4d4cd3befa3c45b6c267721a82 100644 (file)
@@ -249,6 +249,7 @@ bool wxNonOwnedWindow::OSXShowWithEffect(bool show,
     {
         // as apps expect a size event to occur when the window is shown,
         // generate one when it is shown with effect too
+        MacOnInternalSize();
         wxSizeEvent event(GetSize(), m_windowId);
         event.SetEventObject(this);
         HandleWindowEvent(event);
@@ -311,6 +312,7 @@ void wxNonOwnedWindow::HandleActivated( double timestampsec, bool didActivate )
 
 void wxNonOwnedWindow::HandleResized( double timestampsec )
 {
+    MacOnInternalSize();
     wxSizeEvent wxevent( GetSize() , GetId());
     wxevent.SetTimestamp( (int) (timestampsec * 1000) );
     wxevent.SetEventObject( this );
@@ -385,6 +387,7 @@ bool wxNonOwnedWindow::Show(bool show)
     if ( show )
     {
         // because apps expect a size event to occur at this moment
+        MacOnInternalSize();
         wxSizeEvent event(GetSize() , m_windowId);
         event.SetEventObject(this);
         HandleWindowEvent(event);
index 0208bf88389c5cb52f96d74493eba4d7ad643d07..e9b2ac7f4eb1aa275579504c2b765d0a077fa73d 100644 (file)
@@ -1065,6 +1065,7 @@ void wxWindowMac::DoMoveWindow(int x, int y, int width, int height)
         if ( doResize )
         {
             MacRepositionScrollBars() ;
+            MacOnInternalSize();
             wxSize size(actualWidth, actualHeight);
             wxSizeEvent event(size, m_windowId);
             event.SetEventObject(this);
@@ -1148,6 +1149,7 @@ void wxWindowMac::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 
         if (sizeFlags & wxSIZE_FORCE_EVENT)
         {
+            MacOnInternalSize();
             wxSizeEvent event( wxSize(width,height), GetId() );
             event.SetEventObject( this );
             HandleWindowEvent( event );
@@ -1686,6 +1688,7 @@ void wxWindowMac::DoUpdateScrollbarVisibility()
     MacRepositionScrollBars() ;
     if ( triggerSizeEvent )
     {
+        MacOnInternalSize();
         wxSizeEvent event(GetSize(), m_windowId);
         event.SetEventObject(this);
         HandleWindowEvent(event);