BuGUI
BUtton Grid User Interface
Loading...
Searching...
No Matches
deleter.hpp
1#pragma once
2
3#include "base_widget.hpp"
4#include <bugui/concepts/widget.hpp>
5
6namespace bugui
7{
10template <typename T
11 , std::derived_from<base_widget> H
12 , bool can_delete = true>
13struct deleter : H
14{
15 using H::H;
16
20 bool handle_Delete() override final
21 {
22 if constexpr (has_Delete<T>)
23 {
24 static_cast<T*>(this)->on_Delete();
25 return true;
26 }
27
28 H::parent->remove_widget(this);
29 return true;
30 }
31};
32
34template <typename T, std::derived_from<base_widget> H>
35struct deleter<T, H, false> : H
36{
37 using H::H;
38
41 bool handle_Delete() override final
42 {
43 if constexpr (has_Delete<T>)
44 {
45 static_cast<T*>(this)->on_Delete();
46 return true;
47 }
48 else return false;
49 }
50};
51
52} // namespace bugui
Definition widget.hpp:63
bool handle_Delete() override final
Calls on_Delete if defined.
Definition deleter.hpp:41
Allows derived class to call a user defined on_Delete function.
Definition deleter.hpp:14
bool handle_Delete() override final
Calls on_Delete if defined, otherwise simply deletes the widget.
Definition deleter.hpp:20