This commit is contained in:
fluxgen 2004-05-02 21:26:07 +00:00
parent 955c2358fb
commit 4880851f13

83
src/tests/movetest.cc Normal file
View file

@ -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();
}