X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Froot.cpp;h=1c030e82c8c38f103fa5234bde231163fceb3706;hb=9b29612d1cde85fee9b3f011e86a5cabe5dbcce3;hp=8dfe491d14f2d16336c43af653d746ad89bd3686;hpb=ed9873ba7ee862ad76937f579fe371c1a27d5715;p=libs%2Fgltk.git diff --git a/source/root.cpp b/source/root.cpp index 8dfe491..1c030e8 100644 --- a/source/root.cpp +++ b/source/root.cpp @@ -5,12 +5,13 @@ Copyright © 2007 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ +#include #include "root.h" namespace Msp { namespace GLtk { -Root::Root(Resources &r, Window &w): +Root::Root(Resources &r, Graphics::Window &w): Panel(r), window(w) { @@ -21,26 +22,47 @@ Root::Root(Resources &r, Window &w): window.signal_button_press.connect(sigc::mem_fun(this, &Root::button_press_event)); window.signal_button_release.connect(sigc::mem_fun(this, &Root::button_release_event)); window.signal_pointer_motion.connect(sigc::mem_fun(this, &Root::pointer_motion_event)); - window.signal_key_press.connect(sigc::mem_fun(this, &Root::key_press)); - window.signal_key_release.connect(sigc::mem_fun(this, &Root::key_release)); + window.signal_key_press.connect(sigc::mem_fun(this, &Root::key_press_event)); + window.signal_key_release.connect(sigc::mem_fun(this, &Root::key_release_event)); } void Root::button_press_event(int x, int y, unsigned btn, unsigned) { - translate_coords(x, y); - button_press(x, y, btn); + if(visible) + { + translate_coords(x, y); + button_press(x, y, btn); + } } void Root::button_release_event(int x, int y, unsigned btn, unsigned) { - translate_coords(x, y); - button_release(x, y, btn); + if(visible) + { + translate_coords(x, y); + button_release(x, y, btn); + } } void Root::pointer_motion_event(int x, int y) { - translate_coords(x, y); - pointer_motion(x, y); + if(visible) + { + translate_coords(x, y); + pointer_motion(x, y); + } +} + +void Root::key_press_event(unsigned key, unsigned mod, wchar_t ch) +{ + if(visible) + key_press(Input::key_from_sys(key), mod, ch); +} + +void Root::key_release_event(unsigned key, unsigned mod) +{ + if(visible) + key_release(Input::key_from_sys(key), mod); } void Root::translate_coords(int &x, int &y)