X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fmain.h;h=c7d5eca8931a0b01e947178d3044a33d9f3bd13b;hp=ee8076aee26d7fb4d98f0b3f4c7083bfc948046e;hb=e6c66a8e58f1dda071e6fc4abed39afe49d348f8;hpb=42737c4c096f6469fb27e261806b48338a8f672f diff --git a/src/main.h b/src/main.h index ee8076a..c7d5eca 100644 --- a/src/main.h +++ b/src/main.h @@ -12,6 +12,31 @@ inline void MainLoop(Document & doc) { View view(doc); Screen scr; + scr.SetMouseHandler([&](int x, int y, int buttons, int wheel) + { + static bool oldButtonDown = false; + static int oldx, oldy; + if (buttons && !oldButtonDown) + { + // We're beginning a drag. + oldButtonDown = true; + oldx = x; + oldy = y; + scr.SetMouseCursor(Screen::CursorMove); + } + if (buttons) + { + view.Translate(Real(oldx-x)/Real(scr.ViewportWidth()), Real(oldy-y)/Real(scr.ViewportHeight())); + } + else + { + oldButtonDown = false; + scr.SetMouseCursor(Screen::CursorArrow); + } + oldx = x; + oldy = y; + } + ); while (scr.PumpEvents()) { view.Render();