bool CheckModifierFlag(uint8 flag) { if (flag > 7) //1 + 2 + 4 { return false; } if (flag != NULL) { for (uint8 i = 0; i < 3; i++) { if ((CheckFlag(flag, (1 << i)) == true) && (CheckKeyModifier(i + 16) == false)) { return false; } } } else { for (uint8 i = 0; i < 3; i++) { if (CheckKeyModifier(i + 16) == true) { return false; } } } return true; }
void cbAuiNotebook::OnTabCtrlMouseWheel(wxMouseEvent& event) { wxAuiTabCtrl* tabCtrl = (wxAuiTabCtrl*)event.GetEventObject(); if (!tabCtrl) return; cbAuiNotebook* nb = (cbAuiNotebook*)tabCtrl->GetParent(); if (!nb) return; nb->SetSelection(nb->GetPageIndex(tabCtrl->GetWindowFromIdx(tabCtrl->GetActivePage()))); bool modkeys = CheckKeyModifier(); bool advance = (!s_modToAdvance && !modkeys) || (s_modToAdvance && modkeys); if (advance) nb->AdvanceSelection((event.GetWheelRotation() * s_advanceDirection) < 0); else { size_t tabOffset = tabCtrl->GetTabOffset(); size_t lastTabIdx = tabCtrl->GetPageCount()-1; wxWindow* win = nb->GetPage(nb->GetSelection()); if (win) { wxClientDC dc(win); if ((event.GetWheelRotation() * s_moveDirection) > 0) { if (!tabCtrl->IsTabVisible(lastTabIdx,tabOffset,&dc,win)) tabOffset++; } else { if (tabOffset > 0) tabOffset--; } tabCtrl->SetTabOffset(tabOffset); nb->Refresh(); } } }