enter/leave actions work!

This commit is contained in:
Dana Jansens 2002-12-04 08:30:32 +00:00
parent 559a0c67a7
commit 73f7a0bd69
3 changed files with 20 additions and 29 deletions

View file

@ -13,7 +13,7 @@ namespace ob {
const unsigned int OBActions::DOUBLECLICKDELAY = 300; const unsigned int OBActions::DOUBLECLICKDELAY = 300;
OBActions::OBActions() OBActions::OBActions()
: _button(0), _enter_win(0) : _button(0)
{ {
// XXX: load a configuration out of somewhere // XXX: load a configuration out of somewhere
@ -28,6 +28,8 @@ OBActions::~OBActions()
void OBActions::buttonPressHandler(const XButtonEvent &e) void OBActions::buttonPressHandler(const XButtonEvent &e)
{ {
OtkEventHandler::buttonPressHandler(e);
// XXX: run the PRESS guile hook // XXX: run the PRESS guile hook
printf("GUILE: PRESS: win %lx modifiers %u button %u time %lx\n", printf("GUILE: PRESS: win %lx modifiers %u button %u time %lx\n",
(long)e.window, e.state, e.button, e.time); (long)e.window, e.state, e.button, e.time);
@ -40,6 +42,8 @@ void OBActions::buttonPressHandler(const XButtonEvent &e)
void OBActions::buttonReleaseHandler(const XButtonEvent &e) void OBActions::buttonReleaseHandler(const XButtonEvent &e)
{ {
OtkEventHandler::buttonReleaseHandler(e);
// XXX: run the RELEASE guile hook // XXX: run the RELEASE guile hook
printf("GUILE: RELEASE: win %lx modifiers %u button %u time %lx\n", printf("GUILE: RELEASE: win %lx modifiers %u button %u time %lx\n",
(long)e.window, e.state, e.button, e.time); (long)e.window, e.state, e.button, e.time);
@ -82,24 +86,21 @@ void OBActions::buttonReleaseHandler(const XButtonEvent &e)
} }
void OBActions::enter(Window win, unsigned int modifiers) void OBActions::enterHandler(const XCrossingEvent &e)
{ {
_enter_win = win; OtkEventHandler::enterHandler(e);
(void)modifiers;
// XXX: run the ENTER guile hook // XXX: run the ENTER guile hook
printf("GUILE: ENTER: win %lx modifiers %u\n", (long)win, modifiers); printf("GUILE: ENTER: win %lx modifiers %u\n", (long)e.window, e.state);
} }
void OBActions::leave(unsigned int modifiers) void OBActions::leaveHandler(const XCrossingEvent &e)
{ {
(void)modifiers; OtkEventHandler::leaveHandler(e);
// XXX: run the LEAVE guile hook
printf("GUILE: LEAVE: win %lx modifiers %u\n", (long)_enter_win, modifiers);
_enter_win = 0; // XXX: run the LEAVE guile hook
printf("GUILE: LEAVE: win %lx modifiers %u\n", (long)e.window, e.state);
} }

View file

@ -35,8 +35,6 @@ private:
MouseButtonAction _release; MouseButtonAction _release;
//! The mouse button currently being watched from a press for a CLICK //! The mouse button currently being watched from a press for a CLICK
unsigned int _button; unsigned int _button;
//! The window the last enter action occured on (where the mouse is located)
Window _enter_win;
void insertPress(Window win, unsigned int button, Time time); void insertPress(Window win, unsigned int button, Time time);
@ -47,21 +45,8 @@ public:
virtual void buttonPressHandler(const XButtonEvent &e); virtual void buttonPressHandler(const XButtonEvent &e);
virtual void buttonReleaseHandler(const XButtonEvent &e); virtual void buttonReleaseHandler(const XButtonEvent &e);
virtual void enterHandler(const XCrossingEvent &e);
virtual void leaveHandler(const XCrossingEvent &e);
//! Notify that a mouse enter action has occured on a window.
/*!
@param win The window on which the action was performed.
@param modifiers The modifier state for the action.
*/
void enter(Window win, unsigned int modifiers);
//! Notify that a mouse leave action has occured on a window.
/*!
@param modifiers The modifier state for the action.
*/
void leave(unsigned int modifiers);
//! Notify that a mouse drag is taking place. //! Notify that a mouse drag is taking place.
/*! /*!

View file

@ -30,6 +30,11 @@ namespace ob {
client are sent to the window manager. client are sent to the window manager.
*/ */
class OBFrame : public otk::OtkWidget { class OBFrame : public otk::OtkWidget {
public:
//! The event mask to grab on frame windows
static const long event_mask = EnterWindowMask | LeaveWindowMask;
private: private:
OBClient *_client; OBClient *_client;
const otk::ScreenInfo *_screen; const otk::ScreenInfo *_screen;