X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Froot.cpp;h=8d32c467b26eb5924e1825d6d51ff37d01de65a7;hb=394e5c9969a30b604bfaf78fc05a8c2d5c98ab5b;hp=5ea447fecdf46d48f0013aa3f832e5aef9fe8348;hpb=9f38197854e699a6093a906ab43f4238f3cd2388;p=libs%2Fgltk.git diff --git a/source/root.cpp b/source/root.cpp index 5ea447f..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), 0) +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; @@ -133,7 +130,7 @@ void Root::render(GL::Renderer &renderer, GL::Tag tag) const renderer.set_camera(camera); renderer.set_shader_program(shprog); renderer.set_blend(&blend); - renderer.set_depth_test(0); + renderer.set_depth_test(nullptr); Widget::render(renderer); } @@ -185,11 +182,11 @@ 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); - tooltip_target = 0; + tooltip_target = nullptr; } if(pointer_focus)