void TLabel::handleEvent( TEvent& event ) { TStaticText::handleEvent(event); if( event.what == evMouseDown ) { if( link != 0 ) link->select(); clearEvent( event ); } else if( event.what == evKeyDown ) { char c = hotKey( text ); if( getAltCode(c) == event.keyDown.keyCode || ( c != 0 && owner->phase == TGroup::phPostProcess && toupper(event.keyDown.charScan.charCode) == c ) ) { if (link != 0 ) link->select(); clearEvent( event ); } } else if( event.what == evBroadcast && ( event.message.command == cmReceivedFocus || event.message.command == cmReleasedFocus ) ) { light = Boolean( (link->state & sfFocused) != 0 ); drawView(); } }
void TMenuView::handleEvent( TEvent& event ) { if( menu != 0 ) switch (event.what) { case evMouseDown: do_a_select(event); break; case evKeyDown: if( findItem(getAltChar(event.keyDown.keyCode)) != 0 ) do_a_select(event); else { TMenuItem *p = hotKey(event.keyDown.keyCode); if( p != 0 && commandEnabled(p->command)) { event.what = evCommand; event.message.command = p->command; event.message.infoPtr = 0; putEvent(event); clearEvent(event); } } break; case evCommand: if( event.message.command == cmMenu ) do_a_select(event); break; case evBroadcast: if( event.message.command == cmCommandSetChanged ) { if( updateMenu(menu) ) drawView(); } break; } }
void TCluster::handleEvent(TEvent &event) { TView::handleEvent(event); if (!(options & ofSelectable)) return; if (event.what == evMouseDown) { TPoint mouse = makeLocal(event.mouse.where); int i = findSel(mouse); if ((i != -1) && buttonState(i)) sel = i; drawView(); do { mouse = makeLocal(event.mouse.where); if ((findSel(mouse) == sel) && buttonState(sel)) showCursor(); else hideCursor(); } while (mouseEvent(event, evMouseMove)); showCursor(); mouse = makeLocal(event.mouse.where); if (findSel(mouse) == sel) { press(sel); drawView(); } clearEvent(event); } else if (event.what == evKeyDown) { int s = sel; switch (ctrlToArrow(event.keyDown.keyCode)) { case kbUp: if ((state & sfFocused) != 0) { int i = 0; do { i++; s--; if (s < 0) s = strings->getCount() - 1; } while (!(buttonState(s) || (i > strings->getCount()))); moveSel(i, s); clearEvent(event); } break; case kbDown: if ((state & sfFocused) != 0) { int i = 0; do { i++; s++; if (s >= strings->getCount()) s = 0; } while (!(buttonState(s) || (i > strings->getCount()))); moveSel(i, s); clearEvent(event); } break; case kbRight: if ((state & sfFocused) != 0) { int i = 0; do { i++; s += size.y; if (s >= strings->getCount()) { // BUG FIX - EFW - 10/25/94 s = (s + 1) % size.y; if (s >= strings->getCount()) s = 0; } } while (!(buttonState(s) || (i > strings->getCount()))); moveSel(i, s); // BUG FIX - EFW - 10/25/94 clearEvent(event); } break; case kbLeft: if ((state & sfFocused) != 0) { int i = 0; do { i++; if (s > 0) { s -= size.y; if (s < 0) { s = ((strings->getCount() + size.y - 1) / size.y) * size.y + s - 1; if (s >= strings->getCount()) s = strings->getCount() - 1; } } else s = strings->getCount() - 1; } while (!(buttonState(s) || (i > strings->getCount()))); moveSel(i, s); // BUG FIX - EFW - 10/25/94 clearEvent(event); } break; default: for (int i = 0; i < strings->getCount(); i++) { char c = hotKey((char *)(strings->at(i))); if (getAltCode(c) == event.keyDown.keyCode || ((owner->phase == phPostProcess || (state & sfFocused) != 0 ) && c != 0 && toupper(event.keyDown.charScan.charCode) == c ) ) { if (buttonState(i)) { if (focus()) { sel = i; movedTo(sel); press(sel); drawView(); } clearEvent(event); } return; } } if (event.keyDown.charScan.charCode == ' ' && (state & sfFocused) != 0 ) { press(sel); drawView(); clearEvent(event); } } } }
void TCluster::handleEvent( TEvent& event ) { TView::handleEvent(event); if( event.what == evMouseDown ) { TPoint mouse = makeLocal( event.mouse.where ); int i = findSel(mouse); if( i != -1 ) sel = i; drawView(); do { mouse = makeLocal( event.mouse.where ); if( findSel(mouse) == sel ) showCursor(); else hideCursor(); } while( mouseEvent(event,evMouseMove) ); showCursor(); mouse = makeLocal( event.mouse.where ); if( findSel(mouse) == sel ) { press(sel); drawView(); } clearEvent(event); } else if( event.what == evKeyDown ) switch (ctrlToArrow(event.keyDown.keyCode)) { case kbUp: if( (state & sfFocused) != 0 ) { if( --sel < 0 ) sel = strings->getCount()-1; movedTo(sel); drawView(); clearEvent(event); } break; case kbDown: if( (state & sfFocused) != 0 ) { if( ++sel >= strings->getCount() ) sel = 0; movedTo(sel); drawView(); clearEvent(event); } break; case kbRight: if( (state & sfFocused) != 0 ) { sel += size.y; if( sel >= strings->getCount() ) { sel = (sel + 1) % size.y; if( sel >= strings->getCount() ) sel = 0; } movedTo(sel); drawView(); clearEvent(event); } break; case kbLeft: if( (state & sfFocused) != 0 ) { if( sel > 0 ) { sel -= size.y; if( sel < 0 ) { sel = ((strings->getCount()+size.y-1) /size.y)*size.y + sel - 1; if( sel >= strings->getCount() ) sel = strings->getCount()-1; } } else sel = strings->getCount()-1; movedTo(sel); drawView(); clearEvent(event); } break; default: for( int i = 0; i < strings->getCount(); i++ ) { char c = hotKey( (char *)(strings->at(i)) ); if( getAltCode(c) == event.keyDown.keyCode || ( ( owner->phase == phPostProcess || (state & sfFocused) != 0 ) && c != 0 && toupper(event.keyDown.charScan.charCode) == c ) ) { select(); sel = i; movedTo(sel); press(sel); drawView(); clearEvent(event); return; } } if( event.keyDown.charScan.charCode == ' ' && (state & sfFocused) != 0 ) { press(sel); drawView(); clearEvent(event); } } }
void TButton::handleEvent( TEvent& event ) { TPoint mouse; TRect clickRect; clickRect = getExtent(); clickRect.a.x++; clickRect.b.x--; clickRect.b.y--; if( event.what == evMouseDown ) { mouse = makeLocal( event.mouse.where ); if( !clickRect.contains(mouse) ) clearEvent( event ); } TView::handleEvent(event); switch( event.what ) { case evMouseDown: clickRect.b.x++; Boolean down = False; do { mouse = makeLocal( event.mouse.where ); if( down != clickRect.contains( mouse ) ) { down = Boolean( !down ); drawState( down ); } } while( mouseEvent( event, evMouseMove ) ); if( down ) { press(); drawState( False ); } clearEvent( event ); break; case evKeyDown: char c = hotKey( title ); if( event.keyDown.keyCode == getAltCode(c) || ( owner->phase == phPostProcess && c != 0 && toupper(event.keyDown.charScan.charCode) == c ) || ( (state & sfFocused) != 0 && event.keyDown.charScan.charCode == ' ' ) ) { press(); clearEvent( event ); } break; case evBroadcast: switch( event.message.command ) { case cmDefault: if( amDefault ) { press(); clearEvent(event); } break; case cmGrabDefault: case cmReleaseDefault: if( (flags & bfDefault) != 0 ) { amDefault = Boolean(event.message.command == cmReleaseDefault); drawView(); } break; case cmCommandSetChanged: setState(sfDisabled,Boolean(!commandEnabled(command))); drawView(); break; } break; } }