bool TabMenuDisplay::OnMouseUp(PixelScalar x, PixelScalar y) { RasterPoint Pos; Pos.x = x; Pos.y = y; if (dragging) { DragEnd(); const MenuTabIndex di = IsPointOverButton(Pos, GetPageMainIndex(cursor)); if (di == down_index) { // sub menu click if (di.IsSub()) pager.ClickPage(PAGE_OFFSET + GetPageNum(di)); // main menu click else if (di.IsMain()) { /* move cursor to first item in this menu */ cursor = main_menu_buttons[di.main_index].first_page_index; Invalidate(); } else { InvalidateButton(down_index); } } down_index = MenuTabIndex::None(); return true; } else { return PaintWindow::OnMouseUp(x, y); } }
int TabMenuDisplay::GetPageNum(MenuTabIndex i) const { assert(i.IsSub()); assert(i.main_index < main_menu_buttons.size()); assert(i.sub_index < GetNumPages()); const MainMenuButton &main_button = GetMainMenuButton(i.main_index); return main_button.first_page_index + i.sub_index; }
int TabMenuControl::GetPageNum(MenuTabIndex i) const { if (!i.IsSub()) return this->GetMenuPage(); assert(i.main_index < main_menu_buttons.size()); assert(i.sub_index < GetNumPages()); const MainMenuButton &main_button = GetMainMenuButton(i.main_index); return main_button.first_page_index + i.sub_index; }