added middle-click close to wxAuiNotebook
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@46981 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -45,13 +45,14 @@ enum wxAuiNotebookOption
|
|||||||
wxAUI_NB_CLOSE_BUTTON = 1 << 10,
|
wxAUI_NB_CLOSE_BUTTON = 1 << 10,
|
||||||
wxAUI_NB_CLOSE_ON_ACTIVE_TAB = 1 << 11,
|
wxAUI_NB_CLOSE_ON_ACTIVE_TAB = 1 << 11,
|
||||||
wxAUI_NB_CLOSE_ON_ALL_TABS = 1 << 12,
|
wxAUI_NB_CLOSE_ON_ALL_TABS = 1 << 12,
|
||||||
|
wxAUI_NB_MIDDLE_CLICK_CLOSE = 1 << 13,
|
||||||
|
|
||||||
wxAUI_NB_DEFAULT_STYLE = wxAUI_NB_TOP |
|
wxAUI_NB_DEFAULT_STYLE = wxAUI_NB_TOP |
|
||||||
wxAUI_NB_TAB_SPLIT |
|
wxAUI_NB_TAB_SPLIT |
|
||||||
wxAUI_NB_TAB_MOVE |
|
wxAUI_NB_TAB_MOVE |
|
||||||
wxAUI_NB_SCROLL_BUTTONS |
|
wxAUI_NB_SCROLL_BUTTONS |
|
||||||
wxAUI_NB_CLOSE_ON_ACTIVE_TAB
|
wxAUI_NB_CLOSE_ON_ACTIVE_TAB |
|
||||||
|
wxAUI_NB_MIDDLE_CLICK_CLOSE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -452,6 +453,12 @@ protected:
|
|||||||
void OnSize(wxSizeEvent& evt);
|
void OnSize(wxSizeEvent& evt);
|
||||||
void OnLeftDown(wxMouseEvent& evt);
|
void OnLeftDown(wxMouseEvent& evt);
|
||||||
void OnLeftUp(wxMouseEvent& evt);
|
void OnLeftUp(wxMouseEvent& evt);
|
||||||
|
#if wxABI_VERSION >= 20805
|
||||||
|
void OnMiddleDown(wxMouseEvent& evt);
|
||||||
|
void OnMiddleUp(wxMouseEvent& evt);
|
||||||
|
void OnRightDown(wxMouseEvent& evt);
|
||||||
|
void OnRightUp(wxMouseEvent& evt);
|
||||||
|
#endif
|
||||||
void OnMotion(wxMouseEvent& evt);
|
void OnMotion(wxMouseEvent& evt);
|
||||||
void OnLeaveWindow(wxMouseEvent& evt);
|
void OnLeaveWindow(wxMouseEvent& evt);
|
||||||
void OnButton(wxAuiNotebookEvent& evt);
|
void OnButton(wxAuiNotebookEvent& evt);
|
||||||
@@ -583,6 +590,12 @@ protected:
|
|||||||
void OnTabDragMotion(wxCommandEvent& evt);
|
void OnTabDragMotion(wxCommandEvent& evt);
|
||||||
void OnTabEndDrag(wxCommandEvent& evt);
|
void OnTabEndDrag(wxCommandEvent& evt);
|
||||||
void OnTabButton(wxCommandEvent& evt);
|
void OnTabButton(wxCommandEvent& evt);
|
||||||
|
#if wxABI_VERSION >= 20805
|
||||||
|
void OnTabMiddleDown(wxCommandEvent& evt);
|
||||||
|
void OnTabMiddleUp(wxCommandEvent& evt);
|
||||||
|
void OnTabRightDown(wxCommandEvent& evt);
|
||||||
|
void OnTabRightUp(wxCommandEvent& evt);
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@@ -623,6 +636,12 @@ BEGIN_DECLARE_EVENT_TYPES()
|
|||||||
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, 0)
|
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_END_DRAG, 0)
|
||||||
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, 0)
|
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, 0)
|
||||||
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, 0)
|
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, 0)
|
||||||
|
#if wxABI_VERSION >= 20805
|
||||||
|
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, 0)
|
||||||
|
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, 0)
|
||||||
|
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, 0)
|
||||||
|
DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI, wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, 0)
|
||||||
|
#endif
|
||||||
END_DECLARE_EVENT_TYPES()
|
END_DECLARE_EVENT_TYPES()
|
||||||
|
|
||||||
typedef void (wxEvtHandler::*wxAuiNotebookEventFunction)(wxAuiNotebookEvent&);
|
typedef void (wxEvtHandler::*wxAuiNotebookEventFunction)(wxAuiNotebookEvent&);
|
||||||
@@ -647,6 +666,17 @@ typedef void (wxEvtHandler::*wxAuiNotebookEventFunction)(wxAuiNotebookEvent&);
|
|||||||
#define EVT_AUINOTEBOOK_ALLOW_DND(winid, fn) \
|
#define EVT_AUINOTEBOOK_ALLOW_DND(winid, fn) \
|
||||||
wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, winid, wxAuiNotebookEventHandler(fn))
|
wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND, winid, wxAuiNotebookEventHandler(fn))
|
||||||
|
|
||||||
|
#if wxABI_VERSION >= 20805
|
||||||
|
#define EVT_AUINOTEBOOK_TAB_MIDDLE_DOWN(winid, fn) \
|
||||||
|
wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, winid, wxAuiNotebookEventHandler(fn))
|
||||||
|
#define EVT_AUINOTEBOOK_TAB_MIDDLE_UP(winid, fn) \
|
||||||
|
wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, winid, wxAuiNotebookEventHandler(fn))
|
||||||
|
#define EVT_AUINOTEBOOK_TAB_RIGHT_DOWN(winid, fn) \
|
||||||
|
wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, winid, wxAuiNotebookEventHandler(fn))
|
||||||
|
#define EVT_AUINOTEBOOK_TAB_RIGHT_UP(winid, fn) \
|
||||||
|
wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, winid, wxAuiNotebookEventHandler(fn))
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
// wxpython/swig event work
|
// wxpython/swig event work
|
||||||
|
@@ -47,6 +47,10 @@ DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_BEGIN_DRAG)
|
|||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_END_DRAG)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_END_DRAG)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION)
|
||||||
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND)
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP)
|
||||||
|
DEFINE_EVENT_TYPE(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN)
|
||||||
|
|
||||||
|
|
||||||
IMPLEMENT_CLASS(wxAuiNotebook, wxControl)
|
IMPLEMENT_CLASS(wxAuiNotebook, wxControl)
|
||||||
@@ -1968,6 +1972,10 @@ BEGIN_EVENT_TABLE(wxAuiTabCtrl, wxControl)
|
|||||||
EVT_LEFT_DOWN(wxAuiTabCtrl::OnLeftDown)
|
EVT_LEFT_DOWN(wxAuiTabCtrl::OnLeftDown)
|
||||||
EVT_LEFT_DCLICK(wxAuiTabCtrl::OnLeftDown)
|
EVT_LEFT_DCLICK(wxAuiTabCtrl::OnLeftDown)
|
||||||
EVT_LEFT_UP(wxAuiTabCtrl::OnLeftUp)
|
EVT_LEFT_UP(wxAuiTabCtrl::OnLeftUp)
|
||||||
|
EVT_MIDDLE_DOWN(wxAuiTabCtrl::OnMiddleDown)
|
||||||
|
EVT_MIDDLE_UP(wxAuiTabCtrl::OnMiddleUp)
|
||||||
|
EVT_RIGHT_DOWN(wxAuiTabCtrl::OnRightDown)
|
||||||
|
EVT_RIGHT_UP(wxAuiTabCtrl::OnRightUp)
|
||||||
EVT_MOTION(wxAuiTabCtrl::OnMotion)
|
EVT_MOTION(wxAuiTabCtrl::OnMotion)
|
||||||
EVT_LEAVE_WINDOW(wxAuiTabCtrl::OnLeaveWindow)
|
EVT_LEAVE_WINDOW(wxAuiTabCtrl::OnLeaveWindow)
|
||||||
EVT_AUINOTEBOOK_BUTTON(wxID_ANY, wxAuiTabCtrl::OnButton)
|
EVT_AUINOTEBOOK_BUTTON(wxID_ANY, wxAuiTabCtrl::OnButton)
|
||||||
@@ -2099,6 +2107,54 @@ void wxAuiTabCtrl::OnLeftUp(wxMouseEvent& evt)
|
|||||||
m_click_tab = NULL;
|
m_click_tab = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxAuiTabCtrl::OnMiddleUp(wxMouseEvent& evt)
|
||||||
|
{
|
||||||
|
wxWindow* wnd = NULL;
|
||||||
|
if (!TabHitTest(evt.m_x, evt.m_y, &wnd))
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, m_windowId);
|
||||||
|
e.SetEventObject(this);
|
||||||
|
e.SetSelection(GetIdxFromWindow(wnd));
|
||||||
|
GetEventHandler()->ProcessEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAuiTabCtrl::OnMiddleDown(wxMouseEvent& evt)
|
||||||
|
{
|
||||||
|
wxWindow* wnd = NULL;
|
||||||
|
if (!TabHitTest(evt.m_x, evt.m_y, &wnd))
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, m_windowId);
|
||||||
|
e.SetEventObject(this);
|
||||||
|
e.SetSelection(GetIdxFromWindow(wnd));
|
||||||
|
GetEventHandler()->ProcessEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAuiTabCtrl::OnRightUp(wxMouseEvent& evt)
|
||||||
|
{
|
||||||
|
wxWindow* wnd = NULL;
|
||||||
|
if (!TabHitTest(evt.m_x, evt.m_y, &wnd))
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, m_windowId);
|
||||||
|
e.SetEventObject(this);
|
||||||
|
e.SetSelection(GetIdxFromWindow(wnd));
|
||||||
|
GetEventHandler()->ProcessEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAuiTabCtrl::OnRightDown(wxMouseEvent& evt)
|
||||||
|
{
|
||||||
|
wxWindow* wnd = NULL;
|
||||||
|
if (!TabHitTest(evt.m_x, evt.m_y, &wnd))
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, m_windowId);
|
||||||
|
e.SetEventObject(this);
|
||||||
|
e.SetSelection(GetIdxFromWindow(wnd));
|
||||||
|
GetEventHandler()->ProcessEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
void wxAuiTabCtrl::OnMotion(wxMouseEvent& evt)
|
void wxAuiTabCtrl::OnMotion(wxMouseEvent& evt)
|
||||||
{
|
{
|
||||||
wxPoint pos = evt.GetPosition();
|
wxPoint pos = evt.GetPosition();
|
||||||
@@ -2336,6 +2392,18 @@ BEGIN_EVENT_TABLE(wxAuiNotebook, wxControl)
|
|||||||
EVT_COMMAND_RANGE(wxAuiBaseTabCtrlId, wxAuiBaseTabCtrlId+500,
|
EVT_COMMAND_RANGE(wxAuiBaseTabCtrlId, wxAuiBaseTabCtrlId+500,
|
||||||
wxEVT_COMMAND_AUINOTEBOOK_BUTTON,
|
wxEVT_COMMAND_AUINOTEBOOK_BUTTON,
|
||||||
wxAuiNotebook::OnTabButton)
|
wxAuiNotebook::OnTabButton)
|
||||||
|
EVT_COMMAND_RANGE(wxAuiBaseTabCtrlId, wxAuiBaseTabCtrlId+500,
|
||||||
|
wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN,
|
||||||
|
wxAuiNotebook::OnTabMiddleDown)
|
||||||
|
EVT_COMMAND_RANGE(wxAuiBaseTabCtrlId, wxAuiBaseTabCtrlId+500,
|
||||||
|
wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP,
|
||||||
|
wxAuiNotebook::OnTabMiddleUp)
|
||||||
|
EVT_COMMAND_RANGE(wxAuiBaseTabCtrlId, wxAuiBaseTabCtrlId+500,
|
||||||
|
wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN,
|
||||||
|
wxAuiNotebook::OnTabRightDown)
|
||||||
|
EVT_COMMAND_RANGE(wxAuiBaseTabCtrlId, wxAuiBaseTabCtrlId+500,
|
||||||
|
wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP,
|
||||||
|
wxAuiNotebook::OnTabRightUp)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
wxAuiNotebook::wxAuiNotebook()
|
wxAuiNotebook::wxAuiNotebook()
|
||||||
@@ -3626,6 +3694,70 @@ void wxAuiNotebook::OnTabButton(wxCommandEvent& command_evt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxAuiNotebook::OnTabMiddleDown(wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
// patch event through to owner
|
||||||
|
wxAuiTabCtrl* tabs = (wxAuiTabCtrl*)evt.GetEventObject();
|
||||||
|
wxWindow* wnd = tabs->GetWindowFromIdx(evt.GetSelection());
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_DOWN, m_windowId);
|
||||||
|
e.SetSelection(m_tabs.GetIdxFromWindow(wnd));
|
||||||
|
e.SetEventObject(this);
|
||||||
|
GetEventHandler()->ProcessEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAuiNotebook::OnTabMiddleUp(wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
// if the wxAUI_NB_MIDDLE_CLICK_CLOSE is specified, middle
|
||||||
|
// 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());
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_MIDDLE_UP, m_windowId);
|
||||||
|
e.SetSelection(m_tabs.GetIdxFromWindow(wnd));
|
||||||
|
e.SetEventObject(this);
|
||||||
|
if (GetEventHandler()->ProcessEvent(e))
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAuiNotebook::OnTabRightDown(wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
// patch event through to owner
|
||||||
|
wxAuiTabCtrl* tabs = (wxAuiTabCtrl*)evt.GetEventObject();
|
||||||
|
wxWindow* wnd = tabs->GetWindowFromIdx(evt.GetSelection());
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_DOWN, m_windowId);
|
||||||
|
e.SetSelection(m_tabs.GetIdxFromWindow(wnd));
|
||||||
|
e.SetEventObject(this);
|
||||||
|
GetEventHandler()->ProcessEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxAuiNotebook::OnTabRightUp(wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
// patch event through to owner
|
||||||
|
wxAuiTabCtrl* tabs = (wxAuiTabCtrl*)evt.GetEventObject();
|
||||||
|
wxWindow* wnd = tabs->GetWindowFromIdx(evt.GetSelection());
|
||||||
|
|
||||||
|
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_TAB_RIGHT_UP, m_windowId);
|
||||||
|
e.SetSelection(m_tabs.GetIdxFromWindow(wnd));
|
||||||
|
e.SetEventObject(this);
|
||||||
|
GetEventHandler()->ProcessEvent(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Sets the normal font
|
// Sets the normal font
|
||||||
void wxAuiNotebook::SetNormalFont(const wxFont& font)
|
void wxAuiNotebook::SetNormalFont(const wxFont& font)
|
||||||
|
Reference in New Issue
Block a user