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_ON_ACTIVE_TAB = 1 << 11,
|
||||
wxAUI_NB_CLOSE_ON_ALL_TABS = 1 << 12,
|
||||
|
||||
wxAUI_NB_MIDDLE_CLICK_CLOSE = 1 << 13,
|
||||
|
||||
wxAUI_NB_DEFAULT_STYLE = wxAUI_NB_TOP |
|
||||
wxAUI_NB_TAB_SPLIT |
|
||||
wxAUI_NB_TAB_MOVE |
|
||||
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 OnLeftDown(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 OnLeaveWindow(wxMouseEvent& evt);
|
||||
void OnButton(wxAuiNotebookEvent& evt);
|
||||
@@ -583,6 +590,12 @@ protected:
|
||||
void OnTabDragMotion(wxCommandEvent& evt);
|
||||
void OnTabEndDrag(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:
|
||||
|
||||
@@ -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_DRAG_MOTION, 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()
|
||||
|
||||
typedef void (wxEvtHandler::*wxAuiNotebookEventFunction)(wxAuiNotebookEvent&);
|
||||
@@ -646,6 +665,17 @@ typedef void (wxEvtHandler::*wxAuiNotebookEventFunction)(wxAuiNotebookEvent&);
|
||||
wx__DECLARE_EVT1(wxEVT_COMMAND_AUINOTEBOOK_DRAG_MOTION, winid, wxAuiNotebookEventHandler(fn))
|
||||
#define EVT_AUINOTEBOOK_ALLOW_DND(winid, 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
|
||||
|
||||
|
@@ -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_DRAG_MOTION)
|
||||
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)
|
||||
@@ -1968,6 +1972,10 @@ BEGIN_EVENT_TABLE(wxAuiTabCtrl, wxControl)
|
||||
EVT_LEFT_DOWN(wxAuiTabCtrl::OnLeftDown)
|
||||
EVT_LEFT_DCLICK(wxAuiTabCtrl::OnLeftDown)
|
||||
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_LEAVE_WINDOW(wxAuiTabCtrl::OnLeaveWindow)
|
||||
EVT_AUINOTEBOOK_BUTTON(wxID_ANY, wxAuiTabCtrl::OnButton)
|
||||
@@ -2099,6 +2107,54 @@ void wxAuiTabCtrl::OnLeftUp(wxMouseEvent& evt)
|
||||
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)
|
||||
{
|
||||
wxPoint pos = evt.GetPosition();
|
||||
@@ -2336,6 +2392,18 @@ BEGIN_EVENT_TABLE(wxAuiNotebook, wxControl)
|
||||
EVT_COMMAND_RANGE(wxAuiBaseTabCtrlId, wxAuiBaseTabCtrlId+500,
|
||||
wxEVT_COMMAND_AUINOTEBOOK_BUTTON,
|
||||
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()
|
||||
|
||||
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
|
||||
void wxAuiNotebook::SetNormalFont(const wxFont& font)
|
||||
|
Reference in New Issue
Block a user