2005-01-24 18:43:01 +00:00
|
|
|
// movetest.cc a test app for moving windows
|
|
|
|
// Copyright (c) 2004 - 2005 Henrik Kinnunen (fluxgen at fluxbox dot org)
|
|
|
|
|
2004-05-02 21:26:07 +00:00
|
|
|
#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();
|
|
|
|
|
|
|
|
}
|