53 #if !defined (USE_FINAL_H) && !defined (COMPILE_FINAL_CUT) 54 #error "Only <final/final.h> can be included directly." 57 #include "final/menu/fmenulist.h" 58 #include "final/widget/fwindow.h" 75 using FWidget::addAccelerator;
84 auto getClassName()
const ->
FString override;
87 void resetColors()
override;
90 void adjustSize()
override;
100 void cb_itemDeactivated (
const FMenuItem*)
const;
106 std::size_t startpos;
107 std::size_t hotkeypos;
112 static constexpr
auto NOT_SET =
static_cast<std::size_t
>(-1);
115 auto isMenu (
const FMenuItem*)
const -> bool;
119 void calculateDimensions()
const;
120 void selectItem_PostProcessing (
FMenuItem*)
override;
122 void draw()
override;
124 void drawItem (
FMenuItem*, std::size_t&);
125 void setLineAttributes (
const FMenuItem*);
126 void setCursorToHotkeyPosition (
FMenuItem*, std::size_t)
const;
127 void drawMenuText (menuText&);
128 void drawEllipsis (
const menuText&, std::size_t);
129 void drawLeadingSpace (std::size_t&);
130 void drawTrailingSpace (std::size_t&);
131 void adjustItems()
const;
133 auto activateMenu (
const FMenuItem*) -> bool;
137 auto handleActivateKey (
FKeyEvent*) -> bool;
138 auto handleNavigationKey (
FKeyEvent*) -> bool;
140 auto isMouseOverMenuBar (
const FMouseEvent&) -> bool;
146 void handleFocusChange();
148 void updateStatusBar()
const;
151 std::size_t screenWidth{80};
152 bool mouse_down{
false};
153 bool drop_down{
false};
154 bool focus_changed{
false};
164 inline auto FMenuBar::getClassName()
const ->
FString 165 {
return "FMenuBar"; }
168 inline auto FMenuBar::isMenu (
const FMenuItem* mi)
const ->
bool 169 {
return mi->hasMenu(); }
Definition: class_template.cpp:25