movetest
fluxgen fluxgen
1 files changed,
83 insertions(+),
0 deletions(-)
jump to
A
src/tests/movetest.cc
@@ -0,0 +1,83 @@
+#include <iostream> + +#include "../FbTk/FbWindow.hh" +#include "../FbTk/App.hh" +#include "../FbTk/EventManager.hh" +#include "../FbTk/EventHandler.hh" +#include "../FbTk/Color.hh" + +using namespace std; +using namespace FbTk; + +class Ev: public EventHandler { +public: + Ev():m_window(0, + 0, 0, + 512, 512, + ExposureMask | ButtonPressMask | + ButtonReleaseMask | ButtonMotionMask | SubstructureRedirectMask), + m_drag(m_window, + 0, 0, + 32, 32, + + ExposureMask) { /* | ButtonPressMask) { + ButtonReleaseMask | ButtonMotionMask) { + */ + m_window.setName("hello"); + m_window.show(); + m_drag.setBackgroundColor(Color("blue", 0)); + m_drag.show(); + EventManager::instance()->add(*this, m_window); + EventManager::instance()->add(*this, m_drag); + drag = false; + } + + void exposeEvent(XExposeEvent &event) { + m_drag.clear(); + m_window.clear(); + } + + void buttonPressEvent(XButtonEvent &event) { + if (m_drag != event.subwindow) + return; + + cerr<<"drag!"<<endl; + drag = true; + grab_x = event.x - m_drag.x(); + grab_y = event.y - m_drag.y(); + } + + void buttonReleaseEvent(XButtonEvent &event) { + drag = false; + } + + void motionNotifyEvent(XMotionEvent &event) { + if (!drag) + return; + cerr<<"event.x_root: "<<event.x_root<<endl; + cerr<<"event.y_root: "<<event.y_root<<endl; + cerr<<"event.x: "<<event.x<<endl; + cerr<<"event.y: "<<event.y<<endl; + cerr<<"event.window: "<<hex<<event.window<<endl; + cerr<<"event.subwindow: "<<event.subwindow<<endl; + cerr<<"event.root: "<<event.root<<dec<<endl; + cerr<<"event.is_hint: "<<event.is_hint<<endl; + cerr<<"event.same_screen: "<<event.same_screen<<endl; + cerr<<"event.send_event: "<<event.send_event<<endl; + cerr<<"window pos: "<<m_window.x()<<", "<<m_window.y()<<endl; + + m_drag.move(event.x - grab_x, + event.y - grab_y); + } + int grab_x, grab_y; + bool drag; + FbWindow m_window, m_drag; +}; + +int main() { + App app; + Ev ev; + cerr<<"Drag the blue rectangle! ...please :D"<<endl; + app.eventLoop(); + +}