X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Froot.cpp;h=8d32c467b26eb5924e1825d6d51ff37d01de65a7;hb=b4d0a86b77fb5146f5a4f6c76690c16204210f1a;hp=376b9d53c819beec1b2f4548d771571535073b8e;hpb=81c4024fb6acf37df702a803dc4efdf82a81525a;p=libs%2Fgltk.git diff --git a/source/root.cpp b/source/root.cpp index 376b9d5..8d32c46 100644 --- a/source/root.cpp +++ b/source/root.cpp @@ -7,15 +7,22 @@ #include "root.h" #include "systemkeyboardinput.h" +using namespace std; + namespace Msp { namespace GLtk { -Root::Root(Resources &r, Graphics::Window &window): - Root(r, &window, new Input::Keyboard(window), new Input::Mouse(window), nullptr) +Root::Root(Resources &r, Graphics::Window &window, unique_ptr k, unique_ptr m): + Root(r, &window, k.get(), m.get(), nullptr) { - own_input = true; + own_input[0] = move(k); + own_input[1] = move(m); } +Root::Root(Resources &r, Graphics::Window &window): + Root(r, window, make_unique(window), make_unique(window)) +{ } + Root::Root(Resources &r, Graphics::Window *window, Input::Keyboard *k, Input::Mouse *m, Input::Touchscreen *t): resources(r), keyboard(k), @@ -47,7 +54,7 @@ Root::Root(Resources &r, Graphics::Window *window, Input::Keyboard *k, Input::Mo } if(keyboard && !input_method) - input_method = new SystemKeyboardInput(*this, *keyboard); + input_method = make_unique(*this, *keyboard); if(touchscreen) { @@ -57,16 +64,6 @@ Root::Root(Resources &r, Graphics::Window *window, Input::Keyboard *k, Input::Mo } } -Root::~Root() -{ - delete input_method; - if(own_input) - { - delete keyboard; - delete mouse; - } -} - void Root::tick() { Time::TimeStamp t = Time::now(); @@ -78,7 +75,7 @@ void Root::tick() if(tooltip_timeout && Time::now()>tooltip_timeout) { std::string tip; - if(Widget *wdg = get_descendant_at(pointer_x, pointer_y)) + if(Widget *wdg = find_descendant_at(pointer_x, pointer_y)) { tip = wdg->get_tooltip(); tooltip_target = wdg; @@ -185,7 +182,7 @@ bool Root::axis_motion_event(unsigned, float, float) pointer_y = y; tooltip_timeout = Time::now()+700*Time::msec; } - else if(get_descendant_at(x, y)!=tooltip_target) + else if(find_descendant_at(x, y)!=tooltip_target) { if(lbl_tooltip) lbl_tooltip->set_visible(false);