Added wxAUI_MGR_LIVE_RESIZE flag for live sash sizing, the default on wxOSX
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57884 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -47,6 +47,7 @@ enum wxAuiManagerOption
|
||||
wxAUI_MGR_RECTANGLE_HINT = 1 << 5,
|
||||
wxAUI_MGR_HINT_FADE = 1 << 6,
|
||||
wxAUI_MGR_NO_VENETIAN_BLINDS_FADE = 1 << 7,
|
||||
wxAUI_MGR_LIVE_RESIZE = 1 << 8,
|
||||
|
||||
wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
|
||||
wxAUI_MGR_TRANSPARENT_HINT |
|
||||
@@ -560,6 +561,8 @@ protected:
|
||||
wxArrayInt& positions,
|
||||
wxArrayInt& sizes);
|
||||
|
||||
/// Ends a resize action, or for live update, resizes the sash
|
||||
bool DoEndResizeAction(wxMouseEvent& event);
|
||||
|
||||
public:
|
||||
|
||||
@@ -615,6 +618,7 @@ protected:
|
||||
wxAuiDockUIPart* m_hover_button;// button uipart being hovered over
|
||||
wxRect m_last_hint; // last hint rectangle
|
||||
wxPoint m_last_mouse_move; // last mouse move position (see OnMotion)
|
||||
int m_currentDragItem;
|
||||
bool m_skipping;
|
||||
bool m_has_maximized;
|
||||
|
||||
|
@@ -35,6 +35,7 @@ enum wxAuiManagerOption
|
||||
wxAUI_MGR_RECTANGLE_HINT = 1 << 5,
|
||||
wxAUI_MGR_HINT_FADE = 1 << 6,
|
||||
wxAUI_MGR_NO_VENETIAN_BLINDS_FADE = 1 << 7,
|
||||
wxAUI_MGR_LIVE_RESIZE = 1 << 8,
|
||||
|
||||
wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
|
||||
wxAUI_MGR_TRANSPARENT_HINT |
|
||||
|
@@ -84,6 +84,7 @@ class MyFrame : public wxFrame
|
||||
ID_NoGradient,
|
||||
ID_VerticalGradient,
|
||||
ID_HorizontalGradient,
|
||||
ID_LiveUpdate,
|
||||
ID_Settings,
|
||||
ID_CustomizeToolbar,
|
||||
ID_DropDownToolbarItem,
|
||||
@@ -591,6 +592,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(ID_HintFade, MyFrame::OnManagerFlag)
|
||||
EVT_MENU(ID_NoVenetianFade, MyFrame::OnManagerFlag)
|
||||
EVT_MENU(ID_TransparentDrag, MyFrame::OnManagerFlag)
|
||||
EVT_MENU(ID_LiveUpdate, MyFrame::OnManagerFlag)
|
||||
EVT_MENU(ID_AllowActivePane, MyFrame::OnManagerFlag)
|
||||
EVT_MENU(ID_NotebookTabFixedWidth, MyFrame::OnNotebookFlag)
|
||||
EVT_MENU(ID_NotebookNoCloseButton, MyFrame::OnNotebookFlag)
|
||||
@@ -637,6 +639,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_UPDATE_UI(ID_HintFade, MyFrame::OnUpdateUI)
|
||||
EVT_UPDATE_UI(ID_NoVenetianFade, MyFrame::OnUpdateUI)
|
||||
EVT_UPDATE_UI(ID_TransparentDrag, MyFrame::OnUpdateUI)
|
||||
EVT_UPDATE_UI(ID_LiveUpdate, MyFrame::OnUpdateUI)
|
||||
EVT_UPDATE_UI(ID_NoGradient, MyFrame::OnUpdateUI)
|
||||
EVT_UPDATE_UI(ID_VerticalGradient, MyFrame::OnUpdateUI)
|
||||
EVT_UPDATE_UI(ID_HorizontalGradient, MyFrame::OnUpdateUI)
|
||||
@@ -699,6 +702,7 @@ MyFrame::MyFrame(wxWindow* parent,
|
||||
options_menu->AppendCheckItem(ID_NoVenetianFade, _("Disable Venetian Blinds Hint Fade-in"));
|
||||
options_menu->AppendCheckItem(ID_TransparentDrag, _("Transparent Drag"));
|
||||
options_menu->AppendCheckItem(ID_AllowActivePane, _("Allow Active Pane"));
|
||||
options_menu->AppendCheckItem(ID_LiveUpdate, _("Live Resize Update"));
|
||||
options_menu->AppendSeparator();
|
||||
options_menu->AppendRadioItem(ID_NoGradient, _("No Caption Gradient"));
|
||||
options_menu->AppendRadioItem(ID_VerticalGradient, _("Vertical Caption Gradient"));
|
||||
@@ -1078,6 +1082,7 @@ void MyFrame::OnManagerFlag(wxCommandEvent& event)
|
||||
case ID_TransparentHint: flag = wxAUI_MGR_TRANSPARENT_HINT; break;
|
||||
case ID_VenetianBlindsHint: flag = wxAUI_MGR_VENETIAN_BLINDS_HINT; break;
|
||||
case ID_RectangleHint: flag = wxAUI_MGR_RECTANGLE_HINT; break;
|
||||
case ID_LiveUpdate: flag = wxAUI_MGR_LIVE_RESIZE; break;
|
||||
}
|
||||
|
||||
if (flag)
|
||||
@@ -1191,6 +1196,9 @@ void MyFrame::OnUpdateUI(wxUpdateUIEvent& event)
|
||||
case ID_TransparentHint:
|
||||
event.Check((flags & wxAUI_MGR_TRANSPARENT_HINT) != 0);
|
||||
break;
|
||||
case ID_LiveUpdate:
|
||||
event.Check((flags & wxAUI_MGR_LIVE_RESIZE) != 0);
|
||||
break;
|
||||
case ID_VenetianBlindsHint:
|
||||
event.Check((flags & wxAUI_MGR_VENETIAN_BLINDS_HINT) != 0);
|
||||
break;
|
||||
|
@@ -593,6 +593,7 @@ wxAuiManager::wxAuiManager(wxWindow* managed_wnd, unsigned int flags)
|
||||
m_dock_constraint_x = 0.3;
|
||||
m_dock_constraint_y = 0.3;
|
||||
m_reserved = NULL;
|
||||
m_currentDragItem = -1;
|
||||
|
||||
if (managed_wnd)
|
||||
{
|
||||
@@ -735,6 +736,17 @@ unsigned int wxAuiManager::GetFlags() const
|
||||
return m_flags;
|
||||
}
|
||||
|
||||
// Convenience function
|
||||
bool wxAuiManager_HasLiveResize(wxAuiManager& manager)
|
||||
{
|
||||
// With Core Graphics on Mac, it's not possible to show sash feedback,
|
||||
// so we'll always use live update instead.
|
||||
#if defined(__WXMAC__)
|
||||
return true;
|
||||
#else
|
||||
return (manager.GetFlags() & wxAUI_MGR_LIVE_RESIZE) == wxAUI_MGR_LIVE_RESIZE;
|
||||
#endif
|
||||
}
|
||||
|
||||
// don't use these anymore as they are deprecated
|
||||
// use Set/GetManagedFrame() instead
|
||||
@@ -3930,6 +3942,8 @@ void wxAuiManager::UpdateButtonOnScreen(wxAuiDockUIPart* button_ui_part,
|
||||
|
||||
void wxAuiManager::OnLeftDown(wxMouseEvent& event)
|
||||
{
|
||||
m_currentDragItem = -1;
|
||||
|
||||
wxAuiDockUIPart* part = HitTest(event.GetX(), event.GetY());
|
||||
if (part)
|
||||
{
|
||||
@@ -4025,6 +4039,191 @@ void wxAuiManager::OnLeftDown(wxMouseEvent& event)
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Ends a resize action, or for live update, resizes the sash
|
||||
bool wxAuiManager::DoEndResizeAction(wxMouseEvent& event)
|
||||
{
|
||||
// resize the dock or the pane
|
||||
if (m_action_part && m_action_part->type==wxAuiDockUIPart::typeDockSizer)
|
||||
{
|
||||
wxRect& rect = m_action_part->dock->rect;
|
||||
|
||||
wxPoint new_pos(event.m_x - m_action_offset.x,
|
||||
event.m_y - m_action_offset.y);
|
||||
|
||||
switch (m_action_part->dock->dock_direction)
|
||||
{
|
||||
case wxAUI_DOCK_LEFT:
|
||||
m_action_part->dock->size = new_pos.x - rect.x;
|
||||
break;
|
||||
case wxAUI_DOCK_TOP:
|
||||
m_action_part->dock->size = new_pos.y - rect.y;
|
||||
break;
|
||||
case wxAUI_DOCK_RIGHT:
|
||||
m_action_part->dock->size = rect.x + rect.width -
|
||||
new_pos.x - m_action_part->rect.GetWidth();
|
||||
break;
|
||||
case wxAUI_DOCK_BOTTOM:
|
||||
m_action_part->dock->size = rect.y + rect.height -
|
||||
new_pos.y - m_action_part->rect.GetHeight();
|
||||
break;
|
||||
}
|
||||
|
||||
Update();
|
||||
Repaint(NULL);
|
||||
}
|
||||
else if (m_action_part &&
|
||||
m_action_part->type == wxAuiDockUIPart::typePaneSizer)
|
||||
{
|
||||
wxAuiDockInfo& dock = *m_action_part->dock;
|
||||
wxAuiPaneInfo& pane = *m_action_part->pane;
|
||||
|
||||
int total_proportion = 0;
|
||||
int dock_pixels = 0;
|
||||
int new_pixsize = 0;
|
||||
|
||||
int caption_size = m_art->GetMetric(wxAUI_DOCKART_CAPTION_SIZE);
|
||||
int pane_border_size = m_art->GetMetric(wxAUI_DOCKART_PANE_BORDER_SIZE);
|
||||
int sash_size = m_art->GetMetric(wxAUI_DOCKART_SASH_SIZE);
|
||||
|
||||
wxPoint new_pos(event.m_x - m_action_offset.x,
|
||||
event.m_y - m_action_offset.y);
|
||||
|
||||
// determine the pane rectangle by getting the pane part
|
||||
wxAuiDockUIPart* pane_part = GetPanePart(pane.window);
|
||||
wxASSERT_MSG(pane_part,
|
||||
wxT("Pane border part not found -- shouldn't happen"));
|
||||
|
||||
// determine the new pixel size that the user wants;
|
||||
// this will help us recalculate the pane's proportion
|
||||
if (dock.IsHorizontal())
|
||||
new_pixsize = new_pos.x - pane_part->rect.x;
|
||||
else
|
||||
new_pixsize = new_pos.y - pane_part->rect.y;
|
||||
|
||||
// determine the size of the dock, based on orientation
|
||||
if (dock.IsHorizontal())
|
||||
dock_pixels = dock.rect.GetWidth();
|
||||
else
|
||||
dock_pixels = dock.rect.GetHeight();
|
||||
|
||||
// determine the total proportion of all resizable panes,
|
||||
// and the total size of the dock minus the size of all
|
||||
// the fixed panes
|
||||
int i, dock_pane_count = dock.panes.GetCount();
|
||||
int pane_position = -1;
|
||||
for (i = 0; i < dock_pane_count; ++i)
|
||||
{
|
||||
wxAuiPaneInfo& p = *dock.panes.Item(i);
|
||||
if (p.window == pane.window)
|
||||
pane_position = i;
|
||||
|
||||
// while we're at it, subtract the pane sash
|
||||
// width from the dock width, because this would
|
||||
// skew our proportion calculations
|
||||
if (i > 0)
|
||||
dock_pixels -= sash_size;
|
||||
|
||||
// also, the whole size (including decorations) of
|
||||
// all fixed panes must also be subtracted, because they
|
||||
// are not part of the proportion calculation
|
||||
if (p.IsFixed())
|
||||
{
|
||||
if (dock.IsHorizontal())
|
||||
dock_pixels -= p.best_size.x;
|
||||
else
|
||||
dock_pixels -= p.best_size.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
total_proportion += p.dock_proportion;
|
||||
}
|
||||
}
|
||||
|
||||
// find a pane in our dock to 'steal' space from or to 'give'
|
||||
// space to -- this is essentially what is done when a pane is
|
||||
// resized; the pane should usually be the first non-fixed pane
|
||||
// to the right of the action pane
|
||||
int borrow_pane = -1;
|
||||
for (i = pane_position+1; i < dock_pane_count; ++i)
|
||||
{
|
||||
wxAuiPaneInfo& p = *dock.panes.Item(i);
|
||||
if (!p.IsFixed())
|
||||
{
|
||||
borrow_pane = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// demand that the pane being resized is found in this dock
|
||||
// (this assert really never should be raised)
|
||||
wxASSERT_MSG(pane_position != -1, wxT("Pane not found in dock"));
|
||||
|
||||
// prevent division by zero
|
||||
if (dock_pixels == 0 || total_proportion == 0 || borrow_pane == -1)
|
||||
{
|
||||
m_action = actionNone;
|
||||
return false;
|
||||
}
|
||||
|
||||
// calculate the new proportion of the pane
|
||||
int new_proportion = (new_pixsize*total_proportion)/dock_pixels;
|
||||
|
||||
// default minimum size
|
||||
int min_size = 0;
|
||||
|
||||
// check against the pane's minimum size, if specified. please note
|
||||
// that this is not enough to ensure that the minimum size will
|
||||
// not be violated, because the whole frame might later be shrunk,
|
||||
// causing the size of the pane to violate it's minimum size
|
||||
if (pane.min_size.IsFullySpecified())
|
||||
{
|
||||
min_size = 0;
|
||||
|
||||
if (pane.HasBorder())
|
||||
min_size += (pane_border_size*2);
|
||||
|
||||
// calculate minimum size with decorations (border,caption)
|
||||
if (pane_part->orientation == wxVERTICAL)
|
||||
{
|
||||
min_size += pane.min_size.y;
|
||||
if (pane.HasCaption())
|
||||
min_size += caption_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_size += pane.min_size.x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// for some reason, an arithmatic error somewhere is causing
|
||||
// the proportion calculations to always be off by 1 pixel;
|
||||
// for now we will add the 1 pixel on, but we really should
|
||||
// determine what's causing this.
|
||||
min_size++;
|
||||
|
||||
int min_proportion = (min_size*total_proportion)/dock_pixels;
|
||||
|
||||
if (new_proportion < min_proportion)
|
||||
new_proportion = min_proportion;
|
||||
|
||||
|
||||
|
||||
int prop_diff = new_proportion - pane.dock_proportion;
|
||||
|
||||
// borrow the space from our neighbor pane to the
|
||||
// right or bottom (depending on orientation)
|
||||
dock.panes.Item(borrow_pane)->dock_proportion -= prop_diff;
|
||||
pane.dock_proportion = new_proportion;
|
||||
|
||||
// repaint
|
||||
Update();
|
||||
Repaint(NULL);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxAuiManager::OnLeftUp(wxMouseEvent& event)
|
||||
{
|
||||
@@ -4032,189 +4231,19 @@ void wxAuiManager::OnLeftUp(wxMouseEvent& event)
|
||||
{
|
||||
m_frame->ReleaseMouse();
|
||||
|
||||
// get rid of the hint rectangle
|
||||
wxScreenDC dc;
|
||||
DrawResizeHint(dc, m_action_hintrect);
|
||||
|
||||
// resize the dock or the pane
|
||||
if (m_action_part && m_action_part->type==wxAuiDockUIPart::typeDockSizer)
|
||||
if (!wxAuiManager_HasLiveResize(*this))
|
||||
{
|
||||
wxRect& rect = m_action_part->dock->rect;
|
||||
|
||||
wxPoint new_pos(event.m_x - m_action_offset.x,
|
||||
event.m_y - m_action_offset.y);
|
||||
|
||||
switch (m_action_part->dock->dock_direction)
|
||||
{
|
||||
case wxAUI_DOCK_LEFT:
|
||||
m_action_part->dock->size = new_pos.x - rect.x;
|
||||
break;
|
||||
case wxAUI_DOCK_TOP:
|
||||
m_action_part->dock->size = new_pos.y - rect.y;
|
||||
break;
|
||||
case wxAUI_DOCK_RIGHT:
|
||||
m_action_part->dock->size = rect.x + rect.width -
|
||||
new_pos.x - m_action_part->rect.GetWidth();
|
||||
break;
|
||||
case wxAUI_DOCK_BOTTOM:
|
||||
m_action_part->dock->size = rect.y + rect.height -
|
||||
new_pos.y - m_action_part->rect.GetHeight();
|
||||
break;
|
||||
}
|
||||
|
||||
Update();
|
||||
Repaint(NULL);
|
||||
// get rid of the hint rectangle
|
||||
wxScreenDC dc;
|
||||
DrawResizeHint(dc, m_action_hintrect);
|
||||
}
|
||||
else if (m_action_part &&
|
||||
m_action_part->type == wxAuiDockUIPart::typePaneSizer)
|
||||
{
|
||||
wxAuiDockInfo& dock = *m_action_part->dock;
|
||||
wxAuiPaneInfo& pane = *m_action_part->pane;
|
||||
if (m_currentDragItem != -1 && wxAuiManager_HasLiveResize(*this))
|
||||
m_action_part = & (m_uiparts.Item(m_currentDragItem));
|
||||
|
||||
int total_proportion = 0;
|
||||
int dock_pixels = 0;
|
||||
int new_pixsize = 0;
|
||||
DoEndResizeAction(event);
|
||||
|
||||
int caption_size = m_art->GetMetric(wxAUI_DOCKART_CAPTION_SIZE);
|
||||
int pane_border_size = m_art->GetMetric(wxAUI_DOCKART_PANE_BORDER_SIZE);
|
||||
int sash_size = m_art->GetMetric(wxAUI_DOCKART_SASH_SIZE);
|
||||
m_currentDragItem = -1;
|
||||
|
||||
wxPoint new_pos(event.m_x - m_action_offset.x,
|
||||
event.m_y - m_action_offset.y);
|
||||
|
||||
// determine the pane rectangle by getting the pane part
|
||||
wxAuiDockUIPart* pane_part = GetPanePart(pane.window);
|
||||
wxASSERT_MSG(pane_part,
|
||||
wxT("Pane border part not found -- shouldn't happen"));
|
||||
|
||||
// determine the new pixel size that the user wants;
|
||||
// this will help us recalculate the pane's proportion
|
||||
if (dock.IsHorizontal())
|
||||
new_pixsize = new_pos.x - pane_part->rect.x;
|
||||
else
|
||||
new_pixsize = new_pos.y - pane_part->rect.y;
|
||||
|
||||
// determine the size of the dock, based on orientation
|
||||
if (dock.IsHorizontal())
|
||||
dock_pixels = dock.rect.GetWidth();
|
||||
else
|
||||
dock_pixels = dock.rect.GetHeight();
|
||||
|
||||
// determine the total proportion of all resizable panes,
|
||||
// and the total size of the dock minus the size of all
|
||||
// the fixed panes
|
||||
int i, dock_pane_count = dock.panes.GetCount();
|
||||
int pane_position = -1;
|
||||
for (i = 0; i < dock_pane_count; ++i)
|
||||
{
|
||||
wxAuiPaneInfo& p = *dock.panes.Item(i);
|
||||
if (p.window == pane.window)
|
||||
pane_position = i;
|
||||
|
||||
// while we're at it, subtract the pane sash
|
||||
// width from the dock width, because this would
|
||||
// skew our proportion calculations
|
||||
if (i > 0)
|
||||
dock_pixels -= sash_size;
|
||||
|
||||
// also, the whole size (including decorations) of
|
||||
// all fixed panes must also be subtracted, because they
|
||||
// are not part of the proportion calculation
|
||||
if (p.IsFixed())
|
||||
{
|
||||
if (dock.IsHorizontal())
|
||||
dock_pixels -= p.best_size.x;
|
||||
else
|
||||
dock_pixels -= p.best_size.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
total_proportion += p.dock_proportion;
|
||||
}
|
||||
}
|
||||
|
||||
// find a pane in our dock to 'steal' space from or to 'give'
|
||||
// space to -- this is essentially what is done when a pane is
|
||||
// resized; the pane should usually be the first non-fixed pane
|
||||
// to the right of the action pane
|
||||
int borrow_pane = -1;
|
||||
for (i = pane_position+1; i < dock_pane_count; ++i)
|
||||
{
|
||||
wxAuiPaneInfo& p = *dock.panes.Item(i);
|
||||
if (!p.IsFixed())
|
||||
{
|
||||
borrow_pane = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// demand that the pane being resized is found in this dock
|
||||
// (this assert really never should be raised)
|
||||
wxASSERT_MSG(pane_position != -1, wxT("Pane not found in dock"));
|
||||
|
||||
// prevent division by zero
|
||||
if (dock_pixels == 0 || total_proportion == 0 || borrow_pane == -1)
|
||||
{
|
||||
m_action = actionNone;
|
||||
return;
|
||||
}
|
||||
|
||||
// calculate the new proportion of the pane
|
||||
int new_proportion = (new_pixsize*total_proportion)/dock_pixels;
|
||||
|
||||
// default minimum size
|
||||
int min_size = 0;
|
||||
|
||||
// check against the pane's minimum size, if specified. please note
|
||||
// that this is not enough to ensure that the minimum size will
|
||||
// not be violated, because the whole frame might later be shrunk,
|
||||
// causing the size of the pane to violate it's minimum size
|
||||
if (pane.min_size.IsFullySpecified())
|
||||
{
|
||||
min_size = 0;
|
||||
|
||||
if (pane.HasBorder())
|
||||
min_size += (pane_border_size*2);
|
||||
|
||||
// calculate minimum size with decorations (border,caption)
|
||||
if (pane_part->orientation == wxVERTICAL)
|
||||
{
|
||||
min_size += pane.min_size.y;
|
||||
if (pane.HasCaption())
|
||||
min_size += caption_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
min_size += pane.min_size.x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// for some reason, an arithmatic error somewhere is causing
|
||||
// the proportion calculations to always be off by 1 pixel;
|
||||
// for now we will add the 1 pixel on, but we really should
|
||||
// determine what's causing this.
|
||||
min_size++;
|
||||
|
||||
int min_proportion = (min_size*total_proportion)/dock_pixels;
|
||||
|
||||
if (new_proportion < min_proportion)
|
||||
new_proportion = min_proportion;
|
||||
|
||||
|
||||
|
||||
int prop_diff = new_proportion - pane.dock_proportion;
|
||||
|
||||
// borrow the space from our neighbor pane to the
|
||||
// right or bottom (depending on orientation)
|
||||
dock.panes.Item(borrow_pane)->dock_proportion -= prop_diff;
|
||||
pane.dock_proportion = new_proportion;
|
||||
|
||||
// repaint
|
||||
Update();
|
||||
Repaint(NULL);
|
||||
}
|
||||
}
|
||||
else if (m_action == actionClickButton)
|
||||
{
|
||||
@@ -4297,6 +4326,13 @@ void wxAuiManager::OnMotion(wxMouseEvent& event)
|
||||
|
||||
if (m_action == actionResize)
|
||||
{
|
||||
// It's necessary to reset m_action_part since it destroyed
|
||||
// by the Update within DoEndResizeAction.
|
||||
if (m_currentDragItem != -1)
|
||||
m_action_part = & (m_uiparts.Item(m_currentDragItem));
|
||||
else
|
||||
m_currentDragItem = m_uiparts.Index(* m_action_part);
|
||||
|
||||
if (m_action_part)
|
||||
{
|
||||
wxPoint pos = m_action_part->rect.GetPosition();
|
||||
@@ -4305,14 +4341,23 @@ void wxAuiManager::OnMotion(wxMouseEvent& event)
|
||||
else
|
||||
pos.x = wxMax(0, event.m_x - m_action_offset.x);
|
||||
|
||||
wxRect rect(m_frame->ClientToScreen(pos),
|
||||
m_action_part->rect.GetSize());
|
||||
if (wxAuiManager_HasLiveResize(*this))
|
||||
{
|
||||
m_frame->ReleaseMouse();
|
||||
DoEndResizeAction(event);
|
||||
m_frame->CaptureMouse();
|
||||
}
|
||||
else
|
||||
{
|
||||
wxRect rect(m_frame->ClientToScreen(pos),
|
||||
m_action_part->rect.GetSize());
|
||||
wxScreenDC dc;
|
||||
|
||||
wxScreenDC dc;
|
||||
if (!m_action_hintrect.IsEmpty())
|
||||
DrawResizeHint(dc, m_action_hintrect);
|
||||
DrawResizeHint(dc, rect);
|
||||
m_action_hintrect = rect;
|
||||
if (!m_action_hintrect.IsEmpty())
|
||||
DrawResizeHint(dc, m_action_hintrect);
|
||||
DrawResizeHint(dc, rect);
|
||||
m_action_hintrect = rect;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (m_action == actionClickCaption)
|
||||
|
Reference in New Issue
Block a user