*this = source;
}
- bool IsOk() const { return (window != NULL) ? true : false; }
+ bool IsOk() const { return window != NULL; }
bool IsFixed() const { return !HasFlag(optionResizable); }
bool IsResizable() const { return HasFlag(optionResizable); }
bool IsShown() const { return !HasFlag(optionHidden); }
{
if (option_state)
state |= flag;
- else
+ else
state &= ~flag;
return *this;
}
bool HasFlag(unsigned int flag) const
{
- return (state & flag) ? true:false;
+ return (state & flag) != 0;
}
#ifdef SWIG
}
#endif // SWIG
- bool IsOk() const { return (dock_direction != 0) ? true : false; }
- bool IsHorizontal() const { return (dock_direction == wxAUI_DOCK_TOP ||
- dock_direction == wxAUI_DOCK_BOTTOM) ? true:false; }
- bool IsVertical() const { return (dock_direction == wxAUI_DOCK_LEFT ||
+ bool IsOk() const { return dock_direction != 0; }
+ bool IsHorizontal() const { return dock_direction == wxAUI_DOCK_TOP ||
+ dock_direction == wxAUI_DOCK_BOTTOM; }
+ bool IsVertical() const { return dock_direction == wxAUI_DOCK_LEFT ||
dock_direction == wxAUI_DOCK_RIGHT ||
- dock_direction == wxAUI_DOCK_CENTER) ? true:false; }
+ dock_direction == wxAUI_DOCK_CENTER; }
public:
wxAuiPaneInfoPtrArray panes; // array of panes
wxRect rect; // current rectangle
virtual void Activate();
virtual bool Destroy();
+ virtual bool Show(bool show = true);
+
#if wxUSE_STATUSBAR
// no status bars
virtual wxStatusBar* CreateStatusBar(int WXUNUSED(number) = 1,
protected:
void Init();
- virtual bool Show(bool show = true);
virtual void DoSetSize(int x, int y, int width, int height, int size_flags);
virtual void DoMoveWindow(int x, int y, int width, int height);
{
wxCoord normal_textx, normal_texty;
wxCoord selected_textx, selected_texty;
- wxCoord textx, texty;
+ wxCoord texty;
// if the caption is empty, measure some temporary text
wxString caption = page.caption;
if (page.active)
{
dc.SetFont(m_selected_font);
- textx = selected_textx;
texty = selected_texty;
}
- else
+ else
{
dc.SetFont(m_normal_font);
- textx = normal_textx;
texty = normal_texty;
}
wxColor bottom_color = m_base_colour;
dc.GradientFillLinear(r, bottom_color, top_color, wxNORTH);
}
- else
+ else
{
// draw inactive tab
// this gets rid of the top one of those lines in the tab control
if (page.active)
{
- wxColor start_color = m_base_colour;
dc.SetPen(m_base_colour_pen);
dc.DrawLine(border_points[0].x+1,
border_points[0].y,
text_offset = bitmap_offset + page.bitmap.GetWidth();
text_offset += 3; // bitmap padding
}
- else
+ else
{
text_offset = tab_x + 8;
}
case wxAUI_BUTTON_CLOSE:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_close_bmp;
- else
+ else
bmp = m_active_close_bmp;
break;
case wxAUI_BUTTON_LEFT:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_left_bmp;
- else
+ else
bmp = m_active_left_bmp;
break;
case wxAUI_BUTTON_RIGHT:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_right_bmp;
- else
+ else
bmp = m_active_right_bmp;
break;
case wxAUI_BUTTON_WINDOWLIST:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_windowlist_bmp;
- else
+ else
bmp = m_active_windowlist_bmp;
break;
}
rect.SetWidth(bmp.GetWidth());
rect.SetHeight(bmp.GetHeight());
}
- else
+ else
{
rect = wxRect(in_rect.x + in_rect.width - bmp.GetWidth(),
((in_rect.y + in_rect.height)/2) - (bmp.GetHeight()/2),
wxBitmap bmp;
if (measure_bmp.IsOk())
bmp = measure_bmp;
- else
+ else
bmp = page.bitmap;
// we don't use the caption text because we don't
textx = selected_textx;
texty = selected_texty;
}
- else
+ else
{
dc.SetPen(m_normal_bkpen);
dc.SetBrush(m_normal_bkbrush);
close_button_width = m_active_close_bmp.GetWidth();
text_offset = tab_x + (tab_height/2) + ((tab_width-close_button_width)/2) - (textx/2);
}
- else
+ else
{
text_offset = tab_x + (tab_height/3) + (tab_width/2) - (textx/2);
}
wxBitmap bmp;
if (page.active)
bmp = m_active_close_bmp;
- else
+ else
bmp = m_disabled_close_bmp;
wxRect rect(tab_x + tab_width - close_button_width - 1,
case wxAUI_BUTTON_CLOSE:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_close_bmp;
- else
+ else
bmp = m_active_close_bmp;
break;
case wxAUI_BUTTON_LEFT:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_left_bmp;
- else
+ else
bmp = m_active_left_bmp;
break;
case wxAUI_BUTTON_RIGHT:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_right_bmp;
- else
+ else
bmp = m_active_right_bmp;
break;
case wxAUI_BUTTON_WINDOWLIST:
if (button_state & wxAUI_BUTTON_STATE_DISABLED)
bmp = m_disabled_windowlist_bmp;
- else
+ else
bmp = m_active_windowlist_bmp;
break;
}
rect.SetWidth(bmp.GetWidth());
rect.SetHeight(bmp.GetHeight());
}
- else
+ else
{
rect = wxRect(in_rect.x + in_rect.width - bmp.GetWidth(),
((in_rect.y + in_rect.height)/2) - (bmp.GetHeight()/2),
pt = wnd->ScreenToClient(pt);
if (pt.x < 100)
pt.x = 0;
- else
+ else
pt.x -= 100;
// find out the screen coordinate at the bottom of the tab ctrl
if (idx >= m_pages.GetCount())
m_pages.Add(page_info);
- else
+ else
m_pages.Insert(page_info, idx);
// let the art provider know how many pages we have
page.active = true;
found = true;
}
- else
+ else
{
page.active = false;
}
if (i+1 < page_count)
total_width += x_extent;
- else
+ else
total_width += size.x;
if (i >= m_tab_offset)
{
if (i+1 < page_count)
visible_width += x_extent;
- else
+ else
visible_width += size.x;
}
}
}
}
}
- else
+ else
{
// hide left/right buttons
for (i = 0; i < button_count; ++i)
{
if (m_tab_offset == 0)
button.cur_state |= wxAUI_BUTTON_STATE_DISABLED;
- else
+ else
button.cur_state &= ~wxAUI_BUTTON_STATE_DISABLED;
}
if (button.id == wxAUI_BUTTON_RIGHT)
{
if (visible_width < m_rect.GetWidth() - ((int)button_count*16))
button.cur_state |= wxAUI_BUTTON_STATE_DISABLED;
- else
+ else
button.cur_state &= ~wxAUI_BUTTON_STATE_DISABLED;
}
}
wxAuiTabContainerButton& tab_button = m_tab_close_buttons.Item(i);
// determine if a close button is on this tab
- bool close_button = false;
if ((m_flags & wxAUI_NB_CLOSE_ON_ALL_TABS) != 0 ||
((m_flags & wxAUI_NB_CLOSE_ON_ACTIVE_TAB) != 0 && page.active))
{
- close_button = true;
if (tab_button.cur_state == wxAUI_BUTTON_STATE_HIDDEN)
{
tab_button.id = wxAUI_BUTTON_CLOSE;
tab_button.location = wxCENTER;
}
}
- else
+ else
{
tab_button.cur_state = wxAUI_BUTTON_STATE_HIDDEN;
}
wxAuiTabContainerButton& tab_button = m_tab_close_buttons.Item(active);
- // determine if a close button is on this tab
- bool close_button = false;
- if ((m_flags & wxAUI_NB_CLOSE_ON_ALL_TABS) != 0 ||
- ((m_flags & wxAUI_NB_CLOSE_ON_ACTIVE_TAB) != 0 && page.active))
- {
- close_button = true;
- }
-
rect.x = active_offset;
m_art->DrawTab(dc,
wnd,
wxAuiMDIChildFrame* cf = (wxAuiMDIChildFrame*)wnd;
cf->DoShow(show);
}
- else
+ else
{
wnd->Show(show);
}
if (m_is_dragging)
{
m_is_dragging = false;
-
+
wxAuiNotebookEvent evt(wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, m_windowId);
evt.SetSelection(GetIdxFromWindow(m_click_tab));
evt.SetOldSelection(evt.GetSelection());
evt.SetEventObject(this);
GetEventHandler()->ProcessEvent(evt);
-
+
return;
}
return;
}
}
- else
+ else
{
if (m_hover_button)
{
Update();
}
}
- else
+ else
{
SetTabOffset(GetTabOffset()+1);
Refresh();
Update();
}
}
- else if (button == wxAUI_BUTTON_WINDOWLIST)
+ else if (button == wxAUI_BUTTON_WINDOWLIST)
{
int idx = GetArtProvider()->ShowDropDown(this, m_pages, GetActivePage());
GetEventHandler()->ProcessEvent(e);
}
}
- else
+ else
{
event.Skip();
}
m_tab_ctrl_height = 20;
}
- ~wxTabFrame()
- {
- wxDELETE(m_tabs);
- }
+ ~wxTabFrame()
+ {
+ wxDELETE(m_tabs);
+ }
void SetTabCtrlHeight(int h)
{
m_tab_ctrl_height = h;
}
+protected:
void DoSetSize(int x, int y,
int width, int height,
int WXUNUSED(sizeFlags = wxSIZE_AUTO))
*y = m_rect.height;
}
+public:
bool Show( bool WXUNUSED(show = true) ) { return false; }
void DoSizing()
}
}
+protected:
void DoGetSize(int* x, int* y) const
{
if (x)
*y = m_rect.GetHeight();
}
+public:
void Update()
{
// does nothing
}
-public:
-
wxRect m_rect;
wxRect m_tab_rect;
wxAuiTabCtrl* m_tabs;
new_split_size.x /= 2;
new_split_size.y /= 2;
}
- else
+ else
{
// this is in place of a more complicated calculation
// that needs to be implemented
wxAuiTabCtrl* active_tabctrl = GetActiveTabCtrl();
if (page_idx >= active_tabctrl->GetPageCount())
active_tabctrl->AddPage(page, info);
- else
+ else
active_tabctrl->InsertPage(page, info, page_idx);
UpdateTabCtrlHeight();
{
if (page_idx >= m_tabs.GetPageCount())
return false;
-
+
wxWindow* wnd = m_tabs.GetWindowFromIdx(page_idx);
-
+
// hide the window in advance, as this will
// prevent flicker
ShowWnd(wnd, false);
if (!wxPendingDelete.Member(wnd))
wxPendingDelete.Append(wnd);
}
- else
+ else
{
wnd->Destroy();
}
wxWindow* active_wnd = NULL;
if (m_curpage >= 0)
active_wnd = m_tabs.GetWindowFromIdx(m_curpage);
-
+
// save pointer of window being deleted
wxWindow* wnd = m_tabs.GetWindowFromIdx(page_idx);
wxWindow* new_active = NULL;
// make sure we found the page
if (!wnd)
return false;
-
+
// find out which onscreen tab ctrl owns this tab
wxAuiTabCtrl* ctrl;
int ctrl_idx;
if (is_active_in_split)
{
int ctrl_new_page_count = (int)ctrl->GetPageCount();
-
+
if (ctrl_idx >= ctrl_new_page_count)
ctrl_idx = ctrl_new_page_count-1;
-
+
if (ctrl_idx >= 0 && ctrl_idx < (int)ctrl->GetPageCount())
{
// set new page as active in the tab split
ctrl->SetActivePage(ctrl_idx);
-
+
// if the page deleted was the current page for the
// entire tab control, then record the window
// pointer of the new active page for activation
}
}
}
- else
+ else
{
// we are not deleting the active page, so keep it the same
new_active = active_wnd;
}
-
+
if (!new_active)
{
// we haven't yet found a new page to active,
// so select the next page from the main tab
// catalogue
-
+
if (page_idx < m_tabs.GetPageCount())
{
new_active = m_tabs.GetPage(page_idx).window;
}
-
+
if (!new_active && m_tabs.GetPageCount() > 0)
{
new_active = m_tabs.GetPage(0).window;
}
}
-
+
RemoveEmptyTabFrames();
// set new active pane
m_curpage = -1;
SetSelectionToWindow(new_active);
}
-
+
return true;
}
wxAuiTabCtrl* tabctrl = ((wxTabFrame*)pane.window)->m_tabs;
if (tabctrl != ctrl)
tabctrl->SetSelectedFont(m_normal_font);
- else
+ else
tabctrl->SetSelectedFont(m_selected_font);
tabctrl->Refresh();
}
{
split_size = CalculateNewSplitSize();
}
- else
+ else
{
// because there are two panes, always split them
// equally
pane_info.Left();
mouse_pt = wxPoint(0, cli_size.y/2);
}
- else if (direction == wxRIGHT)
+ else if (direction == wxRIGHT)
{
pane_info.Right();
mouse_pt = wxPoint(cli_size.x, cli_size.y/2);
}
- else if (direction == wxTOP)
+ else if (direction == wxTOP)
{
pane_info.Top();
mouse_pt = wxPoint(cli_size.x/2, 0);
}
- else if (direction == wxBOTTOM)
+ else if (direction == wxBOTTOM)
{
pane_info.Bottom();
mouse_pt = wxPoint(cli_size.x/2, cli_size.y);
}
}
}
- else
+ else
{
if (!dest_tabs)
{
ClientToScreen(&hint_rect.x, &hint_rect.y);
m_mgr.ShowHint(hint_rect);
}
- else
+ else
{
m_mgr.DrawHintRect(m_dummy_wnd, client_pt, zero);
}
// window closing, refreshs are pending
if (!wxPendingDelete.Member(tab_frame->m_tabs))
wxPendingDelete.Append(tab_frame->m_tabs);
-
+
tab_frame->m_tabs = NULL;
delete tab_frame;
// was hidden. In the bug, the focus would return to the notebook
// child, which would then enter this handler and call
// SetSelection, which is not desired turn tab dragging.
-
+
wxAuiPaneInfoArray& all_panes = m_mgr.GetAllPanes();
size_t i, pane_count = all_panes.GetCount();
for (i = 0; i < pane_count; ++i)
// click should act like a tab close action. However, first
// give the owner an opportunity to handle the middle up event
// for custom action
-
+
wxAuiTabCtrl* tabs = (wxAuiTabCtrl*)evt.GetEventObject();
wxWindow* wnd = tabs->GetWindowFromIdx(evt.GetSelection());
return;
if (!e.IsAllowed())
return;
-
+
// check if we are supposed to close on middle-up
if ((m_flags & wxAUI_NB_MIDDLE_CLICK_CLOSE) == 0)
return;
-
+
// simulate the user pressing the close button on the tab
evt.SetInt(wxAUI_BUTTON_CLOSE);
OnTabButton(evt);
{
if (ialpha == 100)
return c;
-
+
double r = c.Red(), g = c.Green(), b = c.Blue();
double bg;
-
+
// ialpha is 0..200 where 0 is completely black
// and 200 is completely white and 100 is the same
// convert that to normal alpha 0.0 - 1.0
ialpha = wxMin(ialpha, 200);
ialpha = wxMax(ialpha, 0);
double alpha = ((double)(ialpha - 100.0))/100.0;
-
+
if (ialpha > 100)
{
// blend with white
bg = 255.0;
alpha = 1.0 - alpha; // 0 = transparent fg; 1 = opaque fg
}
- else
+ else
{
// blend with black
bg = 0.0;
alpha = 1.0 + alpha; // 0 = transparent fg; 1 = opaque fg
}
-
+
r = wxAuiBlendColour(r, bg, alpha);
g = wxAuiBlendColour(g, bg, alpha);
b = wxAuiBlendColour(b, bg, alpha);
-
+
return wxColour((unsigned char)r, (unsigned char)g, (unsigned char)b);
}
img.SetMaskColour(123,123,123);
return wxBitmap(img);
}
-
+
static void DrawGradientRectangle(wxDC& dc,
const wxRect& rect,
if (direction == wxAUI_GRADIENT_VERTICAL)
high = rect.GetHeight()-1;
- else
+ else
high = rect.GetWidth()-1;
for (int i = 0; i <= high; ++i)
{
int r,g,b;
-
-
+
+
r = start_color.Red() + (high <= 0 ? 0 : (((i*rd*100)/high)/100));
g = start_color.Green() + (high <= 0 ? 0 : (((i*gd*100)/high)/100));
b = start_color.Blue() + (high <= 0 ? 0 : (((i*bd*100)/high)/100));
if (direction == wxAUI_GRADIENT_VERTICAL)
dc.DrawLine(rect.x, rect.y+i, rect.x+rect.width, rect.y+i);
- else
+ else
dc.DrawLine(rect.x+i, rect.y, rect.x+i, rect.y+rect.height);
}
}
wxString wxAuiChopText(wxDC& dc, const wxString& text, int max_size)
{
wxCoord x,y;
-
+
// first check if the text fits with no problems
dc.GetTextExtent(text, &x, &y);
if (x <= max_size)
return text;
-
+
size_t i, len = text.Length();
size_t last_good_length = 0;
for (i = 0; i < len; ++i)
{
wxString s = text.Left(i);
s += wxT("...");
-
+
dc.GetTextExtent(s, &x, &y);
if (x > max_size)
break;
-
+
last_good_length = i;
}
{
base_colour = wxAuiStepColour(base_colour, 92);
}
-
+
m_base_colour = base_colour;
wxColor darker1_colour = wxAuiStepColour(base_colour, 85);
wxColor darker2_colour = wxAuiStepColour(base_colour, 75);
wxColor darker3_colour = wxAuiStepColour(base_colour, 60);
- wxColor darker4_colour = wxAuiStepColour(base_colour, 50);
+ //wxColor darker4_colour = wxAuiStepColour(base_colour, 50);
wxColor darker5_colour = wxAuiStepColour(base_colour, 40);
m_active_caption_colour = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFE, 0x03, 0xF8, 0x01, 0xF0, 0x19, 0xF3,
0xB8, 0xE3, 0xF0, 0xE1, 0xE0, 0xE0, 0xF0, 0xE1, 0xB8, 0xE3, 0x19, 0xF3,
0x01, 0xF0, 0x03, 0xF8, 0x0F, 0xFE, 0xFF, 0xFF };
-#elif defined( __WXGTK__)
- static unsigned char close_bits[]={
- 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xfb, 0xef, 0xdb, 0xed, 0x8b, 0xe8,
- 0x1b, 0xec, 0x3b, 0xee, 0x1b, 0xec, 0x8b, 0xe8, 0xdb, 0xed, 0xfb, 0xef,
- 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+#elif defined(__WXGTK__)
+ static unsigned char close_bits[]={
+ 0xff, 0xff, 0xff, 0xff, 0x07, 0xf0, 0xfb, 0xef, 0xdb, 0xed, 0x8b, 0xe8,
+ 0x1b, 0xec, 0x3b, 0xee, 0x1b, 0xec, 0x8b, 0xe8, 0xdb, 0xed, 0xfb, 0xef,
+ 0x07, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
#else
static unsigned char close_bits[]={
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf3, 0xcf, 0xf9,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0x1f, 0xf0, 0xdf, 0xf7,
0x07, 0xf4, 0x07, 0xf4, 0xf7, 0xf5, 0xf7, 0xf1, 0xf7, 0xfd, 0xf7, 0xfd,
0x07, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-
+
static unsigned char pin_bits[]={
0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0xdf,0xfc,0xdf,0xfc,
0xdf,0xfc,0xdf,0xfc,0xdf,0xfc,0x0f,0xf8,0x7f,0xff,0x7f,0xff,
dc.SetBrush(m_sash_brush);
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
+#if 0
GdkRectangle gdk_rect;
if (orientation == wxVERTICAL )
{
gdk_rect.width = rect.width;
gdk_rect.height = m_sash_size;
}
+#endif
if (!window) return;
if (!window->m_wxwindow) return;
{
if (active)
dc.SetBrush(wxBrush(m_active_caption_colour));
- else
+ else
dc.SetBrush(wxBrush(m_inactive_caption_colour));
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
m_gradient_type);
#endif
}
- else
+ else
{
#ifdef __WXMAC__
// on mac the gradients are expected to become darker from the top
if (pane.HasCloseButton())
clip_rect.width -= m_button_size;
if (pane.HasPinButton())
- clip_rect.width -= m_button_size;
+ clip_rect.width -= m_button_size;
if (pane.HasMaximizeButton())
- clip_rect.width -= m_button_size;
+ clip_rect.width -= m_button_size;
wxString draw_text = wxAuiChopText(dc, text, clip_rect.width);
wxAuiPaneInfo& pane)
{
wxBitmap bmp;
- if (!(&pane))
- return;
+ if (!(&pane))
+ return;
switch (button)
{
default:
case wxAUI_BUTTON_CLOSE:
if (pane.state & wxAuiPaneInfo::optionActive)
bmp = m_active_close_bitmap;
- else
+ else
bmp = m_inactive_close_bitmap;
break;
case wxAUI_BUTTON_PIN:
if (pane.state & wxAuiPaneInfo::optionActive)
bmp = m_active_pin_bitmap;
- else
+ else
bmp = m_inactive_pin_bitmap;
break;
case wxAUI_BUTTON_MAXIMIZE_RESTORE:
{
if (pane.state & wxAuiPaneInfo::optionActive)
bmp = m_active_restore_bitmap;
- else
+ else
bmp = m_inactive_restore_bitmap;
}
- else
+ else
{
if (pane.state & wxAuiPaneInfo::optionActive)
bmp = m_active_maximize_bitmap;
- else
+ else
bmp = m_inactive_maximize_bitmap;
}
break;
dc.SetBrush(wxBrush(wxAuiStepColour(m_active_caption_colour, 120)));
dc.SetPen(wxPen(wxAuiStepColour(m_active_caption_colour, 70)));
}
- else
+ else
{
dc.SetBrush(wxBrush(wxAuiStepColour(m_inactive_caption_colour, 120)));
dc.SetPen(wxPen(wxAuiStepColour(m_inactive_caption_colour, 70)));
const wxAuiPaneInfo& pane,
wxWindowID id /*= wxID_ANY*/,
long style /*=wxRESIZE_BORDER | wxSYSTEM_MENU | wxCAPTION |
- wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT |
+ wxFRAME_NO_TASKBAR | wxFRAME_FLOAT_ON_PARENT |
wxCLIP_CHILDREN
*/)
: wxAuiFloatingFrameBaseClass(parent, id, wxEmptyString,
pane.floating_pos, pane.floating_size,
- style |
+ style |
(pane.HasCloseButton()?wxCLOSE_BOX:0) |
(pane.HasMaximizeButton()?wxMAXIMIZE_BOX:0) |
(pane.IsFixed()?0:wxRESIZE_BORDER)
m_moving = false;
m_mgr.SetManagedWindow(this);
m_solid_drag = true;
-
+
// find out if the system supports solid window drag.
// on non-msw systems, this is assumed to be the case
#ifdef __WXMSW__
SystemParametersInfo(38 /*SPI_GETDRAGFULLWINDOWS*/, 0, &b, 0);
m_solid_drag = b ? true : false;
#endif
-
+
SetExtraStyle(wxWS_EX_PROCESS_IDLE);
}
// Carry over the minimum size
wxSize pane_min_size = pane.window->GetMinSize();
-
+
// if the frame window's max size is greater than the min size
// then set the max size to the min size as well
wxSize cur_max_size = GetMaxSize();
{
SetMaxSize(pane_min_size);
}
-
+
SetMinSize(pane.window->GetMinSize());
m_mgr.AddPane(m_pane_window, contained_pane);
{
SetSize(pane.floating_size);
}
- else
+ else
{
wxSize size = pane.best_size;
if (size == wxDefaultSize)
{
m_owner_mgr->OnFloatingPaneClosed(m_pane_window, evt);
if (!evt.GetVeto()) {
- m_mgr.DetachPane(m_pane_window);
+ m_mgr.DetachPane(m_pane_window);
Destroy();
}
}
m_moving = true;
return;
}
-
-
+
+
wxRect win_rect = GetRect();
if (win_rect == m_last_rect)
return;
}
- // skip if moving too fast to avoid massive redraws and
+ // skip if moving too fast to avoid massive redraws and
// jumping hint windows
if ((abs(win_rect.x - m_last_rect.x) > 3) ||
(abs(win_rect.y - m_last_rect.y) > 3))
}
wxDirection dir = wxALL;
-
+
int horiz_dist = abs(win_rect.x - m_last3_rect.x);
int vert_dist = abs(win_rect.y - m_last3_rect.y);
-
+
if (vert_dist >= horiz_dist)
{
if (win_rect.y < m_last3_rect.y)
else
dir = wxEAST;
}
-
+
m_last3_rect = m_last2_rect;
m_last2_rect = m_last_rect;
m_last_rect = win_rect;
if (m_last3_rect.IsEmpty())
return;
-
+
OnMoving(event.GetRect(), dir);
}
m_moving = false;
OnMoveFinished();
}
- else
+ else
{
event.RequestMore();
}
wxRect rect(upd.GetRect());
dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height);
- upd++;
+ ++upd;
}
}
wxAuiPaneInfo().Name(wxT("mdiclient")).
CenterPane().PaneBorder(false));
}
- else if (m_frame->IsKindOf(CLASSINFO(wxAuiMDIParentFrame)))
+ else if (m_frame->IsKindOf(CLASSINFO(wxAuiMDIParentFrame)))
{
wxAuiMDIParentFrame* mdi_frame = (wxAuiMDIParentFrame*)m_frame;
wxAuiMDIClientWindow* client_window = mdi_frame->GetClientWindow();
p.window->SetSize(1,1);
- // the following block is a workaround for bug #1531361
- // (see wxWidgets sourceforge page). On wxGTK (only), when
- // a frame is shown/hidden, a move event unfortunately
- // also gets fired. Because we may be dragging around
- // a pane, we need to cancel that action here to prevent
- // a spurious crash.
- if (m_action_window == p.frame)
- {
- if (wxWindow::GetCapture() == m_frame)
+ // the following block is a workaround for bug #1531361
+ // (see wxWidgets sourceforge page). On wxGTK (only), when
+ // a frame is shown/hidden, a move event unfortunately
+ // also gets fired. Because we may be dragging around
+ // a pane, we need to cancel that action here to prevent
+ // a spurious crash.
+ if (m_action_window == p.frame)
+ {
+ if (wxWindow::GetCapture() == m_frame)
m_frame->ReleaseMouse();
m_action = actionNone;
- m_action_window = NULL;
- }
+ m_action_window = NULL;
+ }
- // hide the frame
+ // hide the frame
if (p.frame->IsShown())
p.frame->Show(false);
return ProcessDockResult(target, drop);
}
- else
- {
- m_skipping = false;
- }
- if (!m_skipping)
- {
- m_last_rect = part->dock->rect;
- m_last_rect.Inflate( 15, 15 );
- }
+ m_skipping = false;
+
+ m_last_rect = part->dock->rect;
+ m_last_rect.Inflate( 15, 15 );
drop.Dock().
Direction(part->dock->dock_direction).
// no hint for toolbar floating windows
if (pane.IsToolbar() && m_action == actionDragFloatingPane)
{
- if (m_action == actionDragFloatingPane)
- {
- wxAuiDockInfoArray docks;
- wxAuiPaneInfoArray panes;
- wxAuiDockUIPartArray uiparts;
- wxAuiPaneInfo hint = pane;
+ wxAuiDockInfoArray docks;
+ wxAuiPaneInfoArray panes;
+ wxAuiDockUIPartArray uiparts;
+ wxAuiPaneInfo hint = pane;
- CopyDocksAndPanes(docks, panes, m_docks, m_panes);
+ CopyDocksAndPanes(docks, panes, m_docks, m_panes);
- // find out where the new pane would be
- if (!DoDrop(docks, panes, hint, client_pt))
- return;
- if (hint.IsFloating())
- return;
+ // find out where the new pane would be
+ if (!DoDrop(docks, panes, hint, client_pt))
+ return;
+ if (hint.IsFloating())
+ return;
- pane = hint;
- m_action = actionDragToolbarPane;
- m_action_window = pane.window;
+ pane = hint;
+ m_action = actionDragToolbarPane;
+ m_action_window = pane.window;
- Update();
- }
+ Update();
return;
}
{
// if the frame is about to be deleted, don't bother
if (!m_frame || wxPendingDelete.Member(m_frame))
- return;
-
+ return;
+
wxDC* dc = evt.GetDC();
#ifdef __WXMAC__
// No Child, set Our menu bar back.
if (m_pMyMenuBar)
SetMenuBar(m_pMyMenuBar);
- else
+ else
SetMenuBar(GetMenuBar());
// Make sure we know our menu bar is in use
m_pMyMenuBar = NULL;
}
- else
+ else
{
if (pChild->GetMenuBar() == NULL)
return;
int pos = pMenuBar->FindMenu(wxGetStockLabel(wxID_HELP,wxSTOCK_NOFLAGS));
if (pos == wxNOT_FOUND)
pMenuBar->Append(m_pWindowMenu, _("&Window"));
- else
+ else
pMenuBar->Insert(pos, m_pWindowMenu, _("&Window"));
}
}
{
client_window->Split(cur_idx, wxLEFT);
}
- else if (orient == wxHORIZONTAL)
+ else if (orient == wxHORIZONTAL)
{
client_window->Split(cur_idx, wxTOP);
}
// create the window off-screen to prevent flicker
wxPanel::Create(pClientWindow,
- id,
- wxPoint(cli_size.x+1, cli_size.y+1),
- size,
- wxNO_BORDER, name);
+ id,
+ wxPoint(cli_size.x+1, cli_size.y+1),
+ size,
+ wxNO_BORDER, name);
DoShow(false);