git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43185
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
wxWindow* m_click_tab;
bool m_is_dragging;
wxAuiTabContainerButton* m_hover_button;
wxWindow* m_click_tab;
bool m_is_dragging;
wxAuiTabContainerButton* m_hover_button;
+ wxAuiTabContainerButton* m_pressed_button;
#ifndef SWIG
DECLARE_CLASS(wxAuiTabCtrl)
#ifndef SWIG
DECLARE_CLASS(wxAuiTabCtrl)
m_click_pt = wxDefaultPosition;
m_is_dragging = false;
m_hover_button = NULL;
m_click_pt = wxDefaultPosition;
m_is_dragging = false;
m_hover_button = NULL;
+ m_pressed_button = NULL;
}
wxAuiTabCtrl::~wxAuiTabCtrl()
}
wxAuiTabCtrl::~wxAuiTabCtrl()
m_click_pt = wxDefaultPosition;
m_is_dragging = false;
m_click_tab = NULL;
m_click_pt = wxDefaultPosition;
m_is_dragging = false;
m_click_tab = NULL;
+ m_pressed_button = NULL;
wxWindow* wnd;
if (TabHitTest(evt.m_x, evt.m_y, &wnd))
wxWindow* wnd;
if (TabHitTest(evt.m_x, evt.m_y, &wnd))
- {
- if (m_flags & wxAUI_NB_CLOSE_ON_ACTIVE_TAB)
- m_hover_button = NULL;
-
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, m_windowId);
e.SetSelection(GetIdxFromWindow(wnd));
e.SetOldSelection(GetActivePage());
wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, m_windowId);
e.SetSelection(GetIdxFromWindow(wnd));
e.SetOldSelection(GetActivePage());
- m_hover_button->cur_state = wxAUI_BUTTON_STATE_PRESSED;
+ m_pressed_button = m_hover_button;
+ m_pressed_button->cur_state = wxAUI_BUTTON_STATE_PRESSED;
-void wxAuiTabCtrl::OnLeftUp(wxMouseEvent&)
+void wxAuiTabCtrl::OnLeftUp(wxMouseEvent& evt)
{
if (GetCapture() == this)
ReleaseMouse();
{
if (GetCapture() == this)
ReleaseMouse();
- m_hover_button->cur_state = wxAUI_BUTTON_STATE_HOVER;
+ // make sure we're still clicking the button
+ wxAuiTabContainerButton* button = NULL;
+ if (!ButtonHitTest(evt.m_x, evt.m_y, &button))
+ return;
+
+ if (button != m_pressed_button)
+ {
+ m_pressed_button = NULL;
+ return;
+ }
+
- if (!(m_hover_button->cur_state & wxAUI_BUTTON_STATE_DISABLED))
+ if (!(m_pressed_button->cur_state & wxAUI_BUTTON_STATE_DISABLED))
{
wxAuiNotebookEvent evt(wxEVT_COMMAND_AUINOTEBOOK_BUTTON, m_windowId);
{
wxAuiNotebookEvent evt(wxEVT_COMMAND_AUINOTEBOOK_BUTTON, m_windowId);
- evt.SetInt(m_hover_button->id);
+ evt.SetInt(m_pressed_button->id);
evt.SetEventObject(this);
GetEventHandler()->ProcessEvent(evt);
}
evt.SetEventObject(this);
GetEventHandler()->ProcessEvent(evt);
}
+
+ m_pressed_button = NULL;
}
m_click_pt = wxDefaultPosition;
}
m_click_pt = wxDefaultPosition;