diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2008-12-19 16:44:00 -0300 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2008-12-19 16:44:00 -0300 |
commit | 88649e033a26be4ab3f337c856d6098e05adcd0d (patch) | |
tree | 4595192ffe427982b199213400b3cc8830afca8e /dw | |
parent | 3322961a176a1c0933cf4d525a9ed8e03b7f2d5a (diff) |
Moved clicked from ButtonResource to Resource.
Diffstat (limited to 'dw')
-rw-r--r-- | dw/fltkcomplexbutton.cc | 2 | ||||
-rw-r--r-- | dw/ui.cc | 29 | ||||
-rw-r--r-- | dw/ui.hh | 59 |
3 files changed, 46 insertions, 44 deletions
diff --git a/dw/fltkcomplexbutton.cc b/dw/fltkcomplexbutton.cc index 6c15cee3..9c73f97f 100644 --- a/dw/fltkcomplexbutton.cc +++ b/dw/fltkcomplexbutton.cc @@ -87,7 +87,7 @@ int ComplexButton::handle(int event, const Rectangle& rectangle) { if (pushed()) return 1; // ignore extra pushes on currently-pushed button initial_state = state(); clear_flag(PUSHED); - do_callback(); + /* do_callback(); */ case DRAG: { bool inside = event_inside(rectangle); if (inside) { @@ -69,6 +69,19 @@ void Embed::leaveNotifyImpl (core::EventCrossing *event) resource->emitLeave(); } +bool Embed::buttonPressImpl (core::EventButton *event) +{ + bool handled; + + if (event->button == 3) { + resource->emitClicked(event); + handled = true; + } else { + handled = false; + } + return handled; +} + void Embed::setWidth (int width) { resource->setWidth (width); @@ -201,22 +214,18 @@ void Resource::emitLeave () activateEmitter.emitLeave(this); } -// ---------------------------------------------------------------------- - -bool ButtonResource::ClickedEmitter::emitToReceiver (lout::signal::Receiver - *receiver, - int signalNo, - int argc, - Object **argv) +bool Resource::ClickedEmitter::emitToReceiver(lout::signal::Receiver *receiver, + int signalNo, int argc, + Object **argv) { ((ClickedReceiver*)receiver) - ->clicked ((ButtonResource*)((Pointer*)argv[0])->getValue (), + ->clicked ((Resource*)((Pointer*)argv[0])->getValue (), (EventButton*)((Pointer*)argv[1])->getValue()); return false; } -void ButtonResource::ClickedEmitter::emitClicked (ButtonResource *resource, - EventButton *event) +void Resource::ClickedEmitter::emitClicked (Resource *resource, + EventButton *event) { Pointer p1 (resource); Pointer p2 (event); @@ -232,6 +232,7 @@ protected: void sizeAllocateImpl (Allocation *allocation); void enterNotifyImpl (core::EventCrossing *event); void leaveNotifyImpl (core::EventCrossing *event); + bool buttonPressImpl (core::EventButton *event); public: static int CLASS_ID; @@ -271,6 +272,14 @@ public: virtual void enter (Resource *resource) = 0; virtual void leave (Resource *resource) = 0; }; + /** + * \brief Receiver interface for the "clicked" signal. + */ + class ClickedReceiver: public lout::signal::Receiver + { + public: + virtual void clicked (Resource *resource, EventButton *event) = 0; + }; private: class ActivateEmitter: public lout::signal::Emitter @@ -286,8 +295,20 @@ private: void emitLeave (Resource *resource); }; + class ClickedEmitter: public lout::signal::Emitter + { + protected: + bool emitToReceiver (lout::signal::Receiver *receiver, int signalNo, + int argc, Object **argv); + public: + inline void connectClicked (ClickedReceiver *receiver) { + connect (receiver); } + void emitClicked (Resource *resource, EventButton *event); + }; + Embed *embed; ActivateEmitter activateEmitter; + ClickedEmitter clickedEmitter; void emitEnter (); void emitLeave (); @@ -301,6 +322,8 @@ protected: inline void emitActivate () { return activateEmitter.emitActivate (this); } + inline void emitClicked (EventButton *event) { + clickedEmitter.emitClicked (this, event); } public: inline Resource () { embed = NULL; } @@ -322,43 +345,13 @@ public: inline void connectActivate (ActivateReceiver *receiver) { activateEmitter.connectActivate (receiver); } + inline void connectClicked (ClickedReceiver *receiver) { + clickedEmitter.connectClicked (receiver); } }; class ButtonResource: public Resource -{ -public: - /** - * \brief Receiver interface for the "clicked" signal. - */ - class ClickedReceiver: public lout::signal::Receiver - { - public: - virtual void clicked (ButtonResource *resource, EventButton *event) = 0; - }; - -private: - class ClickedEmitter: public lout::signal::Emitter - { - protected: - bool emitToReceiver (lout::signal::Receiver *receiver, int signalNo, - int argc, Object **argv); - public: - inline void connectClicked (ClickedReceiver *receiver) { - connect (receiver); } - void emitClicked (ButtonResource *resource, EventButton *event); - }; - - ClickedEmitter clickedEmitter; - -protected: - inline void emitClicked (EventButton *event) { - clickedEmitter.emitClicked (this, event); } - -public: - inline void connectClicked (ClickedReceiver *receiver) { - clickedEmitter.connectClicked (receiver); } -}; +{}; /** * \brief Interface for labelled buttons resources. |