add mouse button listener to viewer, and make use of glfw(Get|Set)WindowUserPointer.