rem: || abs(ev.xmotion.y_root - dy) > MOVE_THRESHOLD)
add: || abs(ev.xmotion.y_root - dy) > MOVE_THRESHOLD) {
context: menuTitleMouseDown(WCoreWindow *sender, void *data, XEvent *event){    WMenu *menu = data;    WMenu *tmp;    XEvent ev;    int x=menu->frame_x, y=menu->frame_y;    int dx=event->xbutton.x_root, dy=event->xbutton.y_root;    int i, lower;    Bool started;#ifdef DEBUG    printf("Moving menu\n");#endif    /* can't touch the menu copy */    if (menu->flags.brother)	return;    if (event->xbutton.button != Button1 && event->xbutton.button != Button2)      return;    if (XGrabPointer(dpy, menu->frame->titlebar->window, False, 		     ButtonMotionMask|ButtonReleaseMask|ButtonPressMask,		     GrabModeAsync, GrabModeAsync, None, 		     wCursor[WCUR_MOVE], CurrentTime)!=GrabSuccess) {#ifdef DEBUG0	wwarning("pointer grab failed for menu move\n");#endif	return;    }    if (event->xbutton.state & MOD_MASK) {	wLowerFrame(menu->frame->core);	lower = 1;    } else {	wRaiseFrame(menu->frame->core);	lower = 0;    }    tmp = menu;    /* lower/raise all submenus */    while (1) {	if (tmp->selected_entry>=0 && tmp->cascades	    && tmp->entries[tmp->selected_entry]->cascade>=0) {	    tmp = tmp->cascades[tmp->entries[tmp->selected_entry]->cascade];	    if (!tmp || !tmp->flags.mapped)	      break;	    if (lower)	      wLowerFrame(tmp->frame->core);	    else	      wRaiseFrame(tmp->frame->core);	} else {	    break;	}    }    /* tear off the menu if it's a root menu or a cascade      application menu */    if (!menu->flags.buttoned && !menu->flags.brother 	&& (!menu->flags.app_menu||menu->parent!=NULL)) {	menu->flags.buttoned=1;	wFrameWindowShowButton(menu->frame, WFF_RIGHT_BUTTON);	if (menu->parent) {	    /* turn off selected menu entry in parent menu */	    selectEntry(menu->parent, -1);	    /* make parent map the copy in place of the original */	    for (i=0; i<menu->parent->cascade_no; i++) {		if (menu->parent->cascades[i] == menu) {		    menu->parent->cascades[i] = menu->brother;		    break;		}	    }	}    }    started = False;    while(1) {	WMMaskEvent(dpy, ButtonMotionMask|ButtonReleaseMask|ButtonPressMask		    |ExposureMask, &ev);	switch (ev.type) {	 case MotionNotify:	    if (started) {		x += ev.xmotion.x_root - dx;		y += ev.xmotion.y_root - dy;		dx = ev.xmotion.x_root;		dy = ev.xmotion.y_root;		wMenuMove(menu, x, y, True);	    } else {		if (abs(ev.xmotion.x_root - dx) > MOVE_THRESHOLD		    || abs(ev.xmotion.y_root - dy) > MOVE_THRESHOLD)		    started = True;	    }	    break;	 case ButtonPress:	    break;	 case ButtonRelease:	    if (ev.xbutton.button != event->xbutton.button)		break;#ifdef DEBUG	    printf("End menu move\n");#endif	    XUngrabPointer(dpy, CurrentTime);	    return;	 default:	    WMHandleEvent(&ev);	    break;	}    }}