Something like this.
Code: Select all
EVT_NOTEBOOK_CONTEXT_MENU(...)
Code: Select all
EVT_NOTEBOOK_CONTEXT_MENU(...)
An easy way to do this would be using a mouse event for the notebook. Connect an event handler likesethjackson wrote:Hi will wxNotebook ever have context menu support?
Code: Select all
m_notebook->Connect( wxID_ANY, wxEVT_RIGHT_UP ,wxMouseEventHandler(MyFrame::OnRightClick),NULL,this );
Ok. Thanks. Will something like the above ever be added to wx though? It shouldn't be too hard....upCASE wrote:An easy way to do this would be using a mouse event for the notebook. Connect an event handler likesethjackson wrote:Hi will wxNotebook ever have context menu support?An create a wxMenu in the handler and call wxWindow::PopupMenu(). You'll have to figure out the active tab by yourself though.Code: Select all
m_notebook->Connect( wxID_ANY, wxEVT_RIGHT_UP ,wxMouseEventHandler(MyFrame::OnRightClick),NULL,this );
Handle the EVT_MOUSE_EVENTS event:sethjackson wrote:Hi will wxNotebook ever have context menu support?
Something like this.
I think it is possible (Think Firefox. Maybe they owner-draw the tabs though)....Code: Select all
EVT_NOTEBOOK_CONTEXT_MENU(...)
Code: Select all
void MyNotebook::OnMouseEvent(wxMouseEvent& event)
{
wxEventType eventType = event.GetEventType();
if(m_TabID>=0)
{
if(eventType==wxEVT_LEFT_UP)
{
int id=HitTest(wxPoint(event.GetX(), event.GetY()));
if(id>=0 && id!=m_TabID)
{
wxNotebookPage* page=GetPage(m_TabID);
wxString text=GetPageText(m_TabID);
int image=GetPageImage(m_TabID);
RemovePage(m_TabID);
InsertPage(id, page, text, true, image);
}
m_TabID=-1;
wxSetCursor(wxCursor(wxCURSOR_ARROW));
}
else
{
wxCoord x=event.GetX();
wxCoord y=event.GetY();
int id=HitTest(wxPoint(x, y));
if(id<0)
{
wxSetCursor(wxCursor(wxCURSOR_ARROW));
}
else if(x!=m_X || y!=m_Y)
{
wxSetCursor(wxCursor(wxCURSOR_HAND));
m_X=m_Y=-1024;
}
}
}
else // m_TabID==-1, no dragging
{
if(eventType==wxEVT_LEFT_DOWN)
{
m_X=event.GetX();
m_Y=event.GetY();
m_TabID=HitTest(wxPoint(m_X, m_Y));
}
else if(eventType == wxEVT_RIGHT_DOWN)
{
m_rightClickedTabID = HitTest(event.GetPosition());
wxMenu *menu = popup_menu you created the way you need (C++ code/XRC...);
PopupMenu (menu, event.GetPosition());
delete menu;
}
}
event.Skip();
}
// in MyNotebook class, declare the following members
// int m_TabID, m_rightClickedTabID;
// wxCoord m_X,m_Y;
Code: Select all
event.SetExtraLong(1 + m_rightClickedTabID);
event.Skip();