From: Dana Jansens Date: Wed, 4 Dec 2002 08:30:32 +0000 (+0000) Subject: enter/leave actions work! X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=73f7a0bd69607663050f02acf121f40a739d9619;p=chaz%2Fopenbox enter/leave actions work! --- diff --git a/src/actions.cc b/src/actions.cc index 6043ad0e..ec70b5b4 100644 --- a/src/actions.cc +++ b/src/actions.cc @@ -13,7 +13,7 @@ namespace ob { const unsigned int OBActions::DOUBLECLICKDELAY = 300; OBActions::OBActions() - : _button(0), _enter_win(0) + : _button(0) { // XXX: load a configuration out of somewhere @@ -28,6 +28,8 @@ OBActions::~OBActions() void OBActions::buttonPressHandler(const XButtonEvent &e) { + OtkEventHandler::buttonPressHandler(e); + // XXX: run the PRESS guile hook printf("GUILE: PRESS: win %lx modifiers %u button %u time %lx\n", (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) { + OtkEventHandler::buttonReleaseHandler(e); + // XXX: run the RELEASE guile hook printf("GUILE: RELEASE: win %lx modifiers %u button %u time %lx\n", (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; - - (void)modifiers; + OtkEventHandler::enterHandler(e); + // 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; - // XXX: run the LEAVE guile hook - printf("GUILE: LEAVE: win %lx modifiers %u\n", (long)_enter_win, modifiers); + OtkEventHandler::leaveHandler(e); - _enter_win = 0; + // XXX: run the LEAVE guile hook + printf("GUILE: LEAVE: win %lx modifiers %u\n", (long)e.window, e.state); } diff --git a/src/actions.hh b/src/actions.hh index 35e8e313..09e76c4e 100644 --- a/src/actions.hh +++ b/src/actions.hh @@ -35,8 +35,6 @@ private: MouseButtonAction _release; //! The mouse button currently being watched from a press for a CLICK 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); @@ -47,21 +45,8 @@ public: virtual void buttonPressHandler(const XButtonEvent &e); virtual void buttonReleaseHandler(const XButtonEvent &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); + virtual void enterHandler(const XCrossingEvent &e); + virtual void leaveHandler(const XCrossingEvent &e); //! Notify that a mouse drag is taking place. /*! diff --git a/src/frame.hh b/src/frame.hh index e1647a99..1816ad01 100644 --- a/src/frame.hh +++ b/src/frame.hh @@ -30,6 +30,11 @@ namespace ob { client are sent to the window manager. */ class OBFrame : public otk::OtkWidget { +public: + + //! The event mask to grab on frame windows + static const long event_mask = EnterWindowMask | LeaveWindowMask; + private: OBClient *_client; const otk::ScreenInfo *_screen;