void RtKeyButton::mousePressEvent(QMouseEvent *event) { m_bIsScroll = false; QPushButton::mousePressEvent(event); m_iStartY = event->y(); emit MousePress(event->globalY(),m_iListIndex); }
bool List::HandleEventSelf(const SDL_Event& ev) { switch (ev.type) { case SDL_MOUSEBUTTONDOWN: { if (gui->MouseOverElement(GetRoot(), ev.motion.x, ev.motion.y)) { if(!hasFocus) { hasFocus = true; MouseMove(ev.motion.x, ev.motion.y, ev.motion.xrel, ev.motion.yrel, ev.motion.state); } } else { hasFocus = false; } if(MouseOver(ev.button.x, ev.button.y)) { if(hasFocus) { MousePress(ev.button.x, ev.button.y, ev.button.button); return true; } } break; } case SDL_MOUSEBUTTONUP: { if (!hasFocus) break; if (MouseOver(ev.button.x, ev.button.y) || activeScrollbar) { MouseRelease(ev.button.x, ev.button.y, ev.button.button); return true; } break; } case SDL_MOUSEMOTION: { if (!hasFocus) break; if (MouseOver(ev.button.x, ev.button.y) || activeScrollbar) { MouseMove(ev.motion.x, ev.motion.y, ev.motion.xrel, ev.motion.yrel, ev.motion.state); return true; } break; } case SDL_KEYDOWN: { if (!hasFocus) break; if(ev.key.keysym.sym == SDLK_ESCAPE) { hasFocus = false; break; } return KeyPressed(ev.key.keysym.sym, false); } } return false; }
void XSilChessWindow::HandleCallbackOrEvent(Widget widget, XmAnyCallbackStruct * cbs, XEvent * event) { XGCValues gcval; const char * file_name; XmString xms; char tmp[512]; int i; if (widget==BFileLoad) { XtUnmanageChild(LoadDialog); XmFileSelectionDoSearch(LoadDialog,NULL); XtManageChild(LoadDialog); } else if (widget==BFileSave) { XtUnmanageChild(SaveDialog); XmFileSelectionDoSearch(SaveDialog,NULL); XtManageChild(SaveDialog); } else if (widget==BFileExit) { exit(0); } else if (widget==BGameNew) { AbortSearching=true; HintWanted=false; HintValid=false; Machine->StartNewGame(); RT.SetWorld(Machine); UpdateStatusBar(); UpdateMovesList(); UpdateView(); } else if (widget==BGameFlip) { AbortSearching=true; HintWanted=false; HintValid=false; Machine->SetHumanWhite(!Machine->IsHumanWhite()); RT.SetWorld(Machine); UpdateStatusBar(); UpdateView(); } else if (widget==BGameUndo) { AbortSearching=true; HintWanted=false; HintValid=false; Machine->UndoMove(); if (!Machine->IsHumanOn()) Machine->UndoMove(); RT.SetWorld(Machine); UpdateStatusBar(); UpdateMovesList(); UpdateView(); } else if (widget==BGameList) { XtUnmanageChild(ListDialog); XtManageChild(ListDialog); } else if (widget==LoadDialog) { AbortSearching=true; HintWanted=false; HintValid=false; file_name=XmTextGetString( XmFileSelectionBoxGetChild(widget,XmDIALOG_TEXT) ); if (!Machine->Load(file_name)) { XtUnmanageChild(ErrorBox); sprintf(tmp,"Failed to load '%s'",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(ErrorBox); } RT.SetWorld(Machine); UpdateStatusBar(); UpdateMovesList(); UpdateView(); UpdateDepthMenu(); } else if (widget==SaveDialog) { file_name=XmTextGetString( XmFileSelectionBoxGetChild(widget,XmDIALOG_TEXT) ); if (access(file_name,F_OK)!=-1) { XtUnmanageChild(OverwriteDialog); sprintf(tmp,"OK to overwrite '%s'?",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(OverwriteDialog,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(OverwriteDialog); strcpy(OverwriteFile,file_name); } else if (!Machine->Save(file_name)) { XtUnmanageChild(ErrorBox); sprintf(tmp,"Failed to save '%s'",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(ErrorBox); } } else if (widget==OverwriteDialog) { file_name=OverwriteFile; if (!Machine->Save(file_name)) { XtUnmanageChild(ErrorBox); sprintf(tmp,"Failed to save '%s'",file_name); xms=XmStringCreateSimple(tmp); XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL); XmStringFree(xms); XtManageChild(ErrorBox); } } else if (widget==ViewArea) { if (cbs!=NULL && cbs->reason==XmCR_EXPOSE && cbs->event && cbs->event->xexpose.count==0) { UpdateView(); } else if (cbs!=NULL && cbs->reason==XmCR_RESIZE) { XtVaGetValues(ViewArea,XmNwidth,&ViewWidth,(char*)NULL); XtVaGetValues(ViewArea,XmNheight,&ViewHeight,(char*)NULL); RT.SetViewSize(ViewWidth,ViewHeight); UpdateView(); } else if (event!=NULL && event->type==ButtonPress) { MousePress(event->xbutton.x,event->xbutton.y); } else if (event!=NULL && event->type==MapNotify && !ViewWin) { ViewWin=XtWindow(ViewArea); ViewGC=XtGetGC(ViewArea,0,&gcval); } } else if (widget==BCompHint) { AbortSearching=true; HintWanted=true; HintValid=false; UpdateStatusBar(); } else if (widget==BHelpAbout) { XtUnmanageChild(AboutDialog); XtManageChild(AboutDialog); } else if (widget==LDClose) { XtUnmanageChild(ListDialog); } else { for (i=0; i<=SilChessMachine::MAX_SEARCH_DEPTH; i++) { if (widget==BDepth[i] && cbs!=NULL) { if (((XmToggleButtonCallbackStruct*)cbs)->set) { AbortSearching=true; Machine->SetSearchDepth(i); UpdateStatusBar(); } } } } do { DoPainting(); DoSearching(); } while(NeedPainting && !IsPainting && ViewWin); }