]> git.tdb.fi Git - libs/gui.git/blobdiff - examples/ev.cpp
Add focus events to the event test program
[libs/gui.git] / examples / ev.cpp
index 5a338e7355b9dedb1565812cbb92e1ae007f2d98..cc15e71eb394005ac0a18c1a3acb44fa73187261 100644 (file)
@@ -5,6 +5,8 @@
 #include <msp/io/print.h>
 #include <msp/stringcodec/codec.h>
 #include <msp/stringcodec/utf8.h>
+#include <msp/time/timedelta.h>
+#include <msp/time/utils.h>
 
 using namespace Msp;
 
@@ -21,6 +23,8 @@ public:
 private:
        virtual void tick();
 
+       void got_focus();
+       void lost_focus();
        void key_press(unsigned);
        void key_release(unsigned);
        void character(StringCodec::unichar);
@@ -34,19 +38,33 @@ Ev::Ev(int, char **):
        keyboard(window),
        mouse(window)
 {
+       window.get_display().signal_got_focus.connect(sigc::mem_fun(this, &Ev::got_focus));
+       window.get_display().signal_lost_focus.connect(sigc::mem_fun(this, &Ev::lost_focus));
        window.signal_close.connect(sigc::bind(sigc::mem_fun(this, &Ev::exit), 0));
-       keyboard.signal_button_press.connect(sigc::mem_fun(this, &Ev::key_press));
-       keyboard.signal_button_release.connect(sigc::mem_fun(this, &Ev::key_release));
-       keyboard.signal_character.connect(sigc::mem_fun(this, &Ev::character));
-       mouse.signal_button_press.connect(sigc::mem_fun(this, &Ev::button_press));
-       mouse.signal_button_release.connect(sigc::mem_fun(this, &Ev::button_release));
-       mouse.signal_axis_motion.connect(sigc::mem_fun(this, &Ev::axis_motion));
+       keyboard.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::key_press), false));
+       keyboard.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::key_release), false));
+       keyboard.signal_character.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::character), false));
+       mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::button_press), false));
+       mouse.signal_button_release.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::button_release), false));
+       mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Ev::axis_motion), false));
+       window.set_title("Event tester");
        window.show();
 }
 
 void Ev::tick()
 {
        window.tick();
+       Time::sleep(Time::msec);
+}
+
+void Ev::got_focus()
+{
+       IO::print("got_focus\n");
+}
+
+void Ev::lost_focus()
+{
+       IO::print("lost_focus\n");
 }
 
 void Ev::key_press(unsigned key)