40 class TGUI_API ContextMenu :
public MenuWidgetBase
43 using Ptr = std::shared_ptr<ContextMenu>;
44 using ConstPtr = std::shared_ptr<const ContextMenu>;
55 explicit ContextMenu(
const char* typeName =
StaticWidgetType,
bool initRenderer =
true);
155 template <
typename Func,
typename... Args>
158 return connectMenuItem(std::vector<String>{menuItem}, std::forward<Func>(handler), args...);
173 template <
typename Func,
typename... Args>
174 unsigned int connectMenuItem(
const std::vector<String>& hierarchy, Func&& handler,
const Args&... args)
177 [=](
const std::vector<String>& clickedMenuItem)
179 if (clickedMenuItem == hierarchy)
180 std::invoke(handler, args...);
234 bool addMenuItem(
const std::vector<String>& hierarchy,
bool createParents =
true);
279 bool removeMenuItem(
const std::vector<String>& hierarchy,
bool removeParentsWhenEmpty =
true);
374 [[nodiscard]] std::unique_ptr<DataIO::Node>
save(SavingRenderersMap& renderers)
const override;
379 void load(
const std::unique_ptr<DataIO::Node>& node,
const LoadingRenderersMap& renderers)
override;
395 void emitMenuItemClick(
const std::vector<String>& hierarchy)
override;
401 [[nodiscard]]
float getDefaultMenuItemHeight()
const override;
407 void leftMouseReleasedOnMenu()
override;
415 [[nodiscard]]
bool isMouseOnOpenMenu(Vector2f pos)
const override;
422 void mouseMovedOnMenu(Vector2f pos)
override;
428 void deselectDeepestItem()
override;
442 bool m_menuOpen =
false;
443 float m_itemHeight = 0;