void menu_motion(WThing *thing, XMotionEvent *ev, int dx, int dy, WFunction *func, WFuncArg arg) { WMenu *menu; int ret; if(!WTHING_IS(thing, WTHING_MENU)) return; menu=(WMenu*)thing; if(!menu_select_at(menu, ev->x_root, ev->y_root)){ thing=find_thing(ev->subwindow); if(thing==(WThing*)menu || thing==NULL || !WTHING_IS(thing, WTHING_MENU)){ end_scroll(); return; } wglobal.grab_holder=thing; menu=(WMenu*)thing; if(!menu_select_at(menu, ev->x_root, ev->y_root)){ end_scroll(); return; } } if(test_scroll(menu, ev->x_root, ev->y_root)) start_scroll(menu); }
void qm_Scroller::leaveEvent ( QEvent * event ) { if (!b_scrolling || b_pause) return; b_fast = false; start_scroll(); event->accept(); }
void qm_Scroller::enterEvent ( QEvent * event ) { if (!b_scrolling || b_pause) return; b_fast = true; start_scroll(); event->accept(); }
void qm_Scroller::render() { virtual_label->setText(new_string); W_text = (virtual_label->minimumSizeHint()).width (); virtual_label->setGeometry(QRect(0, 0, W_text, H_display)); QPixmap qpx = virtual_label->grab(); QImg_fulltext = qpx.toImage(); if (QImg_fulltext.width() > W_display) start_scroll(); else setPixmap(qpx); }
static void scrollfunc() { WMenu *menu=scrollmenu; int dx=scrollhoriz*SCROLL_AMOUNT; int dy=scrollvert*SCROLL_AMOUNT; Window win; if(menu->x+dx>0 && scrollhoriz==1) dx=-menu->x; else if(menu->x+menu->w+dx<SCREEN->width-SCROLL_BORDER && scrollhoriz==-1) dx=-(menu->x+menu->w-SCREEN->width+SCROLL_BORDER); if(menu->y+dy>0 && scrollvert==1) dy=-menu->y; else if(menu->y+menu->h+dy<SCREEN->height-SCROLL_BORDER && scrollvert==-1) dy=-(menu->y+menu->h-SCREEN->height+SCROLL_BORDER); move_menu(scrolltop, dx, dy); /* pointer root -> dx, dy */ get_pointer_rootpos(&dx, &dy); if(menu_select_at(menu, dx, dy)){ if(test_scroll(menu, dx, dy)) return; }else if(test_scroll(menu, dx, dy)){ return; }else{ if(!find_window_at(dx, dy, &win)) goto end; menu=(WMenu*)find_thing_t(win, WTHING_MENU); if(menu==NULL) goto end; if(test_scroll(menu, dx, dy)) start_scroll(menu); } end: end_scroll(); }