Merge branch 'auitoolbars19189' of https://github.com/Kvaz1r/wxWidgets

Fix handling of resizable and floating toolbar panes in AUI.

See https://github.com/wxWidgets/wxWidgets/pull/2393

Closes #19189.
This commit is contained in:
Vadim Zeitlin
2021-06-15 00:04:06 +02:00
2 changed files with 3 additions and 17 deletions

View File

@@ -603,7 +603,6 @@ protected:
wxRect m_lastHint; // last hint rectangle wxRect m_lastHint; // last hint rectangle
wxPoint m_lastMouseMove; // last mouse move position (see OnMotion) wxPoint m_lastMouseMove; // last mouse move position (see OnMotion)
int m_currentDragItem; int m_currentDragItem;
bool m_skipping;
bool m_hasMaximized; bool m_hasMaximized;
double m_dockConstraintX; // 0.0 .. 1.0; max pct of window width a dock can consume double m_dockConstraintX; // 0.0 .. 1.0; max pct of window width a dock can consume

View File

@@ -614,7 +614,6 @@ wxAuiManager::wxAuiManager(wxWindow* managed_wnd, unsigned int flags)
m_art = new wxAuiDefaultDockArt; m_art = new wxAuiDefaultDockArt;
m_hintWnd = NULL; m_hintWnd = NULL;
m_flags = flags; m_flags = flags;
m_skipping = false;
m_hasMaximized = false; m_hasMaximized = false;
m_frame = NULL; m_frame = NULL;
m_dockConstraintX = 0.3; m_dockConstraintX = 0.3;
@@ -3010,29 +3009,17 @@ bool wxAuiManager::DoDrop(wxAuiDockInfoArray& docks,
if (!part->dock->fixed || part->dock->dock_direction == wxAUI_DOCK_CENTER || if (!part->dock->fixed || part->dock->dock_direction == wxAUI_DOCK_CENTER ||
pt.x >= cli_size.x || pt.x <= 0 || pt.y >= cli_size.y || pt.y <= 0) pt.x >= cli_size.x || pt.x <= 0 || pt.y >= cli_size.y || pt.y <= 0)
{ {
if (m_lastRect.IsEmpty() || m_lastRect.Contains(pt.x, pt.y )) if ((m_flags & wxAUI_MGR_ALLOW_FLOATING) && drop.IsFloatable())
{ {
m_skipping = true; drop.Float();
} }
else else
{ {
if ((m_flags & wxAUI_MGR_ALLOW_FLOATING) && drop.IsFloatable()) drop.Position(pt.x - GetDockPixelOffset(drop) - offset.x);
{
drop.Float();
}
m_skipping = false;
return ProcessDockResult(target, drop);
} }
drop.Position(pt.x - GetDockPixelOffset(drop) - offset.x);
return ProcessDockResult(target, drop); return ProcessDockResult(target, drop);
} }
m_skipping = false;
m_lastRect = part->dock->rect; m_lastRect = part->dock->rect;
m_lastRect.Inflate( m_frame->FromDIP(wxSize(15, 15)) ); m_lastRect.Inflate( m_frame->FromDIP(wxSize(15, 15)) );