namespace Msp {
namespace GLtk {
-Dialog::Dialog():
- stale(false)
-{ }
-
void Dialog::add_button(Button &button, int code)
{
add(button);
button.signal_clicked.connect(sigc::bind(sigc::mem_fun(this, &Dialog::response), code));
}
-void Dialog::button_release(int x, int y, unsigned button)
-{
- Panel::button_release(x, y, button);
- if(stale)
- delete this;
-}
-
-void Dialog::key_release(unsigned key, unsigned mod)
+void Dialog::set_modal(bool m)
{
- Panel::key_release(key, mod);
- if(stale)
- delete this;
+ if(m)
+ {
+ set_focus();
+ if(state&FOCUS)
+ signal_grab_pointer.emit();
+ }
+ else
+ signal_ungrab_pointer.emit();
}
void Dialog::response(int code)
{
on_response(code);
signal_response.emit(code);
- stale = true;
+ set_visible(false);
}
void Dialog::Loader::action_button(const string &n, int c)
{
- RefPtr<Button> btn = new Button();
+ unique_ptr<Button> btn = make_unique<Button>();
load_sub(*btn);
obj.add_button(*btn.get(), c);
last_widget = wdg_map[n] = btn.release();