예제 #1
0
파일: keyboard.cpp 프로젝트: Dingf/Paper-TD
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;
}
예제 #2
0
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();
        }
    }
}