]> git.saurik.com Git - wxWidgets.git/blobdiff - src/aui/framemanager.cpp
Use typesafe wxVariantList in wxVariant instead of wxList
[wxWidgets.git] / src / aui / framemanager.cpp
index 6195560341ab4680c21132e69c6b2eadaf052424..518eab1b33a04c15b8c579c8736f21085ff5b588 100644 (file)
@@ -1447,12 +1447,11 @@ bool wxAuiManager::LoadPerspective(const wxString& layout, bool update)
         if (!p.IsOk())
         {
             // the pane window couldn't be found
-            // in the existing layout
-            return false;
+            // in the existing layout -- skip it
+            continue;
         }
 
         p.SafeSet(pane);
-
     }
 
     if (update)
@@ -2090,6 +2089,8 @@ wxSizer* wxAuiManager::LayoutAll(wxAuiPaneInfoArray& panes,
                 dock.fixed = false;
             if (!pane.IsToolbar())
                 dock.toolbar = false;
+            if (pane.HasFlag(wxAuiPaneInfo::optionDockFixed))
+                dock.fixed = true;
             if (pane.state & wxAuiPaneInfo::actionPane)
                 action_pane_marked = true;
         }
@@ -2293,6 +2294,8 @@ void wxAuiManager::GetDockSizeConstraint(double* width_pct, double* height_pct)
 
 void wxAuiManager::Update()
 {
+    m_hover_button = NULL;
+
     wxSizer* sizer;
     int i, pane_count = m_panes.GetCount();
 
@@ -3792,8 +3795,9 @@ void wxAuiManager::OnLeftDown(wxMouseEvent& event)
         if (part->type == wxAuiDockUIPart::typeDockSizer ||
             part->type == wxAuiDockUIPart::typePaneSizer)
         {
-            if (part->dock && part->dock->dock_direction == wxAUI_DOCK_CENTER)
-                return;
+            // Removing this restriction so that a centre pane can be resized
+            //if (part->dock && part->dock->dock_direction == wxAUI_DOCK_CENTER)
+            //    return;
 
             // a dock may not be resized if it has a single
             // pane which is not resizable
@@ -3846,9 +3850,6 @@ void wxAuiManager::OnLeftDown(wxMouseEvent& event)
 
 
 
-            if (part->dock && part->dock->dock_direction == wxAUI_DOCK_CENTER)
-                return;
-
             if (GetFlags() & wxAUI_MGR_ALLOW_ACTIVE_PANE)
             {
                 // set the caption as active
@@ -3856,6 +3857,9 @@ void wxAuiManager::OnLeftDown(wxMouseEvent& event)
                 Repaint();
             }
 
+            if (part->dock && part->dock->dock_direction == wxAUI_DOCK_CENTER)
+                return;
+
             m_action = actionClickCaption;
             m_action_part = part;
             m_action_start = wxPoint(event.m_x, event.m_y);
@@ -4309,7 +4313,8 @@ void wxAuiManager::OnChildFocus(wxChildFocusEvent& event)
     // active panes are allowed by the owner)
     if (GetFlags() & wxAUI_MGR_ALLOW_ACTIVE_PANE)
     {
-        if (GetPane(event.GetWindow()).IsOk())
+        wxAuiPaneInfo& pane = GetPane(event.GetWindow());
+        if (pane.IsOk() && (pane.state & wxAuiPaneInfo::optionActive) == 0)
         {
             SetActivePane(m_panes, event.GetWindow());
             m_frame->Refresh();