#include "wx/aui/floatpane.h"
#ifndef WX_PRECOMP
+ #include "wx/panel.h"
#include "wx/settings.h"
#include "wx/app.h"
#include "wx/dcclient.h"
continue;
// if the point is inside the rectangle, we have a hit
- if (item->rect.Inside(x,y))
+ if (item->rect.Contains(x,y))
result = item;
}
else if (pt.y >= cli_size.y - layer_insert_offset &&
pt.y < cli_size.y - layer_insert_offset + auiLayerInsertPixels)
{
+ int new_layer = wxMax( wxMax( GetMaxLayer(docks, wxAUI_DOCK_BOTTOM),
+ GetMaxLayer(docks, wxAUI_DOCK_LEFT)),
+ GetMaxLayer(docks, wxAUI_DOCK_RIGHT)) + 1;
+
drop.Dock().Bottom().
+ Layer(new_layer).
Row(0).
Position(pt.x - GetDockPixelOffset(drop) - offset.x);
return ProcessDockResult(target, drop);
{
if (!part || !part->dock)
return false;
-
+
// calculate the offset from where the dock begins
// to the point where the user dropped the pane
int dock_drop_offset = 0;
// should float if being dragged over center pane windows
if (!part->dock->fixed || part->dock->dock_direction == wxAUI_DOCK_CENTER)
{
- if (m_last_rect.IsEmpty() || m_last_rect.Inside(pt.x, pt.y ))
+ if (m_last_rect.IsEmpty() || m_last_rect.Contains(pt.x, pt.y ))
{
m_skipping = true;
}
{
drop.Float();
}
-
+
m_skipping = false;
-
+
return ProcessDockResult(target, drop);
}
-
+
drop.Position(pt.x - GetDockPixelOffset(drop) - offset.x);
return ProcessDockResult(target, drop);
{
m_skipping = false;
}
-
+
if (!m_skipping)
{
m_last_rect = part->dock->rect;
Position(dock_drop_offset);
if ((
- ((pt.y < part->dock->rect.y + 2) && part->dock->IsHorizontal()) ||
- ((pt.x < part->dock->rect.x + 2) && part->dock->IsVertical())
+ ((pt.y < part->dock->rect.y + 1) && part->dock->IsHorizontal()) ||
+ ((pt.x < part->dock->rect.x + 1) && part->dock->IsVertical())
) && part->dock->panes.GetCount() > 1)
{
- int row = drop.dock_row;
- DoInsertDockRow(panes, part->dock->dock_direction,
- part->dock->dock_layer,
- part->dock->dock_row);
- drop.dock_row = row;
+ if ((part->dock->dock_direction == wxAUI_DOCK_TOP) ||
+ (part->dock->dock_direction == wxAUI_DOCK_LEFT))
+ {
+ int row = drop.dock_row;
+ DoInsertDockRow(panes, part->dock->dock_direction,
+ part->dock->dock_layer,
+ part->dock->dock_row);
+ drop.dock_row = row;
+ }
+ else
+ {
+ DoInsertDockRow(panes, part->dock->dock_direction,
+ part->dock->dock_layer,
+ part->dock->dock_row+1);
+ drop.dock_row = part->dock->dock_row+1;
+ }
}
if ((
((pt.x > part->dock->rect.x + part->dock->rect.width - 2 ) && part->dock->IsVertical())
) && part->dock->panes.GetCount() > 1)
{
- DoInsertDockRow(panes, part->dock->dock_direction,
- part->dock->dock_layer,
- part->dock->dock_row+1);
- drop.dock_row = part->dock->dock_row+1;
+ if ((part->dock->dock_direction == wxAUI_DOCK_TOP) ||
+ (part->dock->dock_direction == wxAUI_DOCK_LEFT))
+ {
+ DoInsertDockRow(panes, part->dock->dock_direction,
+ part->dock->dock_layer,
+ part->dock->dock_row+1);
+ drop.dock_row = part->dock->dock_row+1;
+ }
+ else
+ {
+ int row = drop.dock_row;
+ DoInsertDockRow(panes, part->dock->dock_direction,
+ part->dock->dock_layer,
+ part->dock->dock_row);
+ drop.dock_row = row;
+ }
}
return ProcessDockResult(target, drop);
pos = wnd->ClientToScreen( pos );
pt.y = pos.y;
}
+#else
+ wxUnusedVar(dir);
#endif
wxPoint client_pt = m_frame->ScreenToClient(pt);
pos = wnd->ClientToScreen( pos );
pt.y = pos.y;
}
+#else
+ wxUnusedVar(dir);
#endif
wxPoint client_pt = m_frame->ScreenToClient(pt);
{
case wxDockUIPart::typeDockSizer:
case wxDockUIPart::typePaneSizer:
- m_art->DrawSash(*dc, part.orientation, part.rect);
+ m_art->DrawSash(*dc, m_frame, part.orientation, part.rect);
break;
case wxDockUIPart::typeBackground:
- m_art->DrawBackground(*dc, part.orientation, part.rect);
+ m_art->DrawBackground(*dc, m_frame, part.orientation, part.rect);
break;
case wxDockUIPart::typeCaption:
- m_art->DrawCaption(*dc, part.pane->caption, part.rect, *part.pane);
+ m_art->DrawCaption(*dc, m_frame, part.pane->caption, part.rect, *part.pane);
break;
case wxDockUIPart::typeGripper:
- m_art->DrawGripper(*dc, part.rect, *part.pane);
+ m_art->DrawGripper(*dc, m_frame, part.rect, *part.pane);
break;
case wxDockUIPart::typePaneBorder:
- m_art->DrawBorder(*dc, part.rect, *part.pane);
+ m_art->DrawBorder(*dc, m_frame, part.rect, *part.pane);
break;
case wxDockUIPart::typePaneButton:
- m_art->DrawPaneButton(*dc, part.button->button_id,
+ m_art->DrawPaneButton(*dc, m_frame, part.button->button_id,
wxAUI_BUTTON_STATE_NORMAL, part.rect, *part.pane);
break;
}
if (pt.x != 0 || pt.y != 0)
cdc.SetDeviceOrigin(pt.x, pt.y);
- m_art->DrawPaneButton(cdc,
+ m_art->DrawPaneButton(cdc, m_frame,
button_ui_part->button->button_id,
state,
button_ui_part->rect,