Event System: Prevent mouse motion in click events
Don't convert mouse button events to click if they include dragging. Double-click events already checked for this.
This commit is contained in:
@@ -83,6 +83,9 @@
|
|||||||
|
|
||||||
#include "RNA_enum_types.h"
|
#include "RNA_enum_types.h"
|
||||||
|
|
||||||
|
/* Motion in pixels allowed before we don't consider single/double click. */
|
||||||
|
#define WM_EVENT_CLICK_WIGGLE_ROOM 2
|
||||||
|
|
||||||
static void wm_notifier_clear(wmNotifier *note);
|
static void wm_notifier_clear(wmNotifier *note);
|
||||||
static void update_tablet_data(wmWindow *win, wmEvent *event);
|
static void update_tablet_data(wmWindow *win, wmEvent *event);
|
||||||
|
|
||||||
@@ -2204,7 +2207,9 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
|
|||||||
|
|
||||||
if ((event->val == KM_RELEASE) &&
|
if ((event->val == KM_RELEASE) &&
|
||||||
(win->eventstate->prevval == KM_PRESS) &&
|
(win->eventstate->prevval == KM_PRESS) &&
|
||||||
(win->eventstate->check_click == true))
|
(win->eventstate->check_click == true) &&
|
||||||
|
((abs(event->x - win->eventstate->prevclickx)) <= WM_EVENT_CLICK_WIGGLE_ROOM &&
|
||||||
|
(abs(event->y - win->eventstate->prevclicky)) <= WM_EVENT_CLICK_WIGGLE_ROOM))
|
||||||
{
|
{
|
||||||
event->val = KM_CLICK;
|
event->val = KM_CLICK;
|
||||||
|
|
||||||
@@ -3163,8 +3168,9 @@ static bool wm_event_is_double_click(wmEvent *event, const wmEvent *event_state)
|
|||||||
(event_state->prevval == KM_RELEASE) &&
|
(event_state->prevval == KM_RELEASE) &&
|
||||||
(event->val == KM_PRESS))
|
(event->val == KM_PRESS))
|
||||||
{
|
{
|
||||||
if ((ISMOUSE(event->type) == false) || ((ABS(event->x - event_state->prevclickx)) <= 2 &&
|
if ((ISMOUSE(event->type) == false) ||
|
||||||
(ABS(event->y - event_state->prevclicky)) <= 2))
|
((abs(event->x - event_state->prevclickx)) <= WM_EVENT_CLICK_WIGGLE_ROOM &&
|
||||||
|
(abs(event->y - event_state->prevclicky)) <= WM_EVENT_CLICK_WIGGLE_ROOM))
|
||||||
{
|
{
|
||||||
if ((PIL_check_seconds_timer() - event_state->prevclicktime) * 1000 < U.dbl_click_time) {
|
if ((PIL_check_seconds_timer() - event_state->prevclicktime) * 1000 < U.dbl_click_time) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user