diff --git a/grabber.cc b/grabber.cc index 4dcb4dec..dacb356c 100644 --- a/grabber.cc +++ b/grabber.cc @@ -440,7 +440,7 @@ void Grabber::XiDevice::grab_device(GrabState grab) { return; } XIGrabDevice(dpy, dev, ROOT, CurrentTime, None, GrabModeAsync, GrabModeAsync, False, - grab == GrabYes ? &device_mask : &raw_mask); + (grab == GrabYes || absolute) ? &device_mask : &raw_mask); } void Grabber::grab_xi_devs(GrabState grab) { diff --git a/main.cc b/main.cc index 3fb1d78a..644bc069 100644 --- a/main.cc +++ b/main.cc @@ -472,6 +472,10 @@ class ScrollHandler : public AbstractScrollHandler { if (xinput_pressed.size()) AbstractScrollHandler::raw_motion(e, abs_x, abs_y); } + virtual void motion(RTriple e) { + if (xinput_pressed.size()) + AbstractScrollHandler::raw_motion(e, true, true); + } virtual void press_master(guint b, Time t) { fake_core_button(b, false); } @@ -510,6 +514,10 @@ class ScrollAdvancedHandler : public AbstractScrollHandler { p->press(b, e); move_back(); } + virtual void motion(RTriple e) { + if (xinput_pressed.size()) + AbstractScrollHandler::raw_motion(e, true, true); + } virtual std::string name() { return "ScrollAdvanced"; } virtual Grabber::State grab_mode() { return Grabber::RAW; } };