movetest
This commit is contained in:
parent
955c2358fb
commit
4880851f13
1 changed files with 83 additions and 0 deletions
83
src/tests/movetest.cc
Normal file
83
src/tests/movetest.cc
Normal 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();
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue