void Button::modifyButtonState() { if(isDoingKeyAction) { return; } if(isToggleButton() && toggled) { if(getButtonState() != CLICKED) { changeButtonState(CLICKED); } return; } if(mouseIsDown && mouseIsInside) { changeButtonState(CLICKED); } else if(mouseIsDown && !mouseIsInside) { changeButtonState(getMouseLeaveState()); } else if(!mouseIsDown && mouseIsInside) { changeButtonState(HOVERED); } else { changeButtonState(DEFAULT); } }
void InputDeviceAdapterMouse::resetKeys(const XKeymapEvent& event) { /* Calculate the new modifier key mask: */ int newModifierKeyMask=0x0; for(int i=0; i<256; ++i) if(event.key_vector[i>>3]&(0x1<<(i&0x7))) { /* Convert the keycode to a keysym: */ XKeyEvent keyEvent; keyEvent.type=KeyPress; keyEvent.serial=event.serial; keyEvent.send_event=event.send_event; keyEvent.display=event.display; keyEvent.window=event.window; keyEvent.state=0x0; keyEvent.keycode=i; KeySym keyCode=XLookupKeysym(&keyEvent,0); int modifierIndex=getModifierIndex(keyCode); if(modifierIndex>=0) newModifierKeyMask|=0x1<<modifierIndex; } /* Set the new modifier key mask: */ changeModifierKeyMask(newModifierKeyMask); /* Set the states of all button keys: */ for(int i=0; i<numButtonKeys; ++i) { int stateIndex=(numButtons+numButtonKeys)*modifierKeyMask+numButtons+i; changeButtonState(stateIndex,false); } for(int i=0; i<256; ++i) if(event.key_vector[i>>3]&(0x1<<(i&0x7))) { /* Convert the keycode to a keysym: */ XKeyEvent keyEvent; keyEvent.type=KeyPress; keyEvent.serial=event.serial; keyEvent.send_event=event.send_event; keyEvent.display=event.display; keyEvent.window=event.window; keyEvent.state=0x0; keyEvent.keycode=i; KeySym keyCode=XLookupKeysym(&keyEvent,0); int buttonIndex=getButtonIndex(keyCode); if(buttonIndex>=0) { int stateIndex=(numButtons+numButtonKeys)*modifierKeyMask+numButtons+buttonIndex; changeButtonState(stateIndex,true); } } // requestUpdate(); }
void ExistingUserDialog::closeEvent(QCloseEvent *event) { //Signals to activate mainwindow buttons and delete dialog pointer in mainwindow.cpp changeButtonState(1); deleteExistingUserDialog(); event->accept(); //closes dialog }
bool InputDeviceAdapterMouse::keyReleased(int keyCode) { bool stateChanged=false; if(!keyboardMode) { /* Check if the key is a button key: */ int buttonIndex=getButtonIndex(keyCode); if(buttonIndex>=0) { /* Set button state: */ int stateIndex=(numButtons+numButtonKeys)*modifierKeyMask+numButtons+buttonIndex; stateChanged=changeButtonState(stateIndex,false); } /* Check if the key is a modifier key: */ int modifierIndex=getModifierIndex(keyCode); if(modifierIndex>=0) { /* Change current modifier mask: */ changeModifierKeyMask(modifierKeyMask&~(0x1<<modifierIndex)); stateChanged=true; } // requestUpdate(); } return stateChanged; }
void Button::keyDown( KeyEvent &keyEvent ) { if(keyEvent.getKey() == KEY_SPACE || keyEvent.getKey() == KEY_ENTER) { isDoingKeyAction = true; changeButtonState(CLICKED); keyEvent.consume(); } }
bool InputDeviceAdapterMouse::setButtonState(int buttonIndex,bool newButtonState) { bool stateChanged=false; /* Check if given button is represented: */ if(buttonIndex>=0&&buttonIndex<numButtons) { /* Set current button state: */ int stateIndex=(numButtons+numButtonKeys)*modifierKeyMask+buttonIndex; stateChanged=changeButtonState(stateIndex,newButtonState); // requestUpdate(); } return stateChanged; }
bool InputDeviceAdapterMouse::keyPressed(int keyCode,int modifierMask,const char* string) { bool stateChanged=false; if(keyCode==keyboardModeToggleKeyCode) { keyboardMode=!keyboardMode; if(fakeMouseCursor) { /* Change the glyph renderer's cursor type to a text cursor: */ } else if(keyboardMode) { /* Change the cursor in all windows to a text cursor: */ for(int i=0; i<getNumWindows(); ++i) { VRWindow* win=Vrui::getWindow(i); if(win!=0) { Cursor cursor=XCreateFontCursor(win->getContext().getDisplay(),XC_xterm); XDefineCursor(win->getContext().getDisplay(),win->getWindow(),cursor); XFreeCursor(win->getContext().getDisplay(),cursor); } } } else { /* Change the cursor in all windows back to the regular: */ for(int i=0; i<getNumWindows(); ++i) { VRWindow* win=Vrui::getWindow(i); if(win!=0) XUndefineCursor(win->getContext().getDisplay(),win->getWindow()); } } } else if(keyboardMode) { /* Process the key event: */ ControlKeyMap::Iterator ckmIt=controlKeyMap.findEntry(ControlKey(keyCode,modifierMask&(ShiftMask|ControlMask))); if(!ckmIt.isFinished()) { /* Store a text control event: */ textControlEvents.push_back(std::pair<int,GLMotif::TextControlEvent>(nextEventOrdinal,ckmIt->getDest())); ++nextEventOrdinal; } else if(string!=0&&string[0]!='\0') { /* Store a text event: */ textEvents.push_back(std::pair<int,GLMotif::TextEvent>(nextEventOrdinal,GLMotif::TextEvent(string))); ++nextEventOrdinal; } stateChanged=true; } else { /* Check if the key is a button key: */ int buttonIndex=getButtonIndex(keyCode); if(buttonIndex>=0) { /* Set button state: */ int stateIndex=(numButtons+numButtonKeys)*modifierKeyMask+numButtons+buttonIndex; stateChanged=changeButtonState(stateIndex,true); } /* Check if the key is a modifier key: */ int modifierIndex=getModifierIndex(keyCode); if(modifierIndex>=0) { /* Change current modifier mask: */ changeModifierKeyMask(modifierKeyMask|(0x1<<modifierIndex)); stateChanged=true; } } // requestUpdate(); return stateChanged; }
void Button::setButtonState( ButtonStateEnum state ) { changeButtonState(state); }