54 #if !defined (USE_FINAL_H) && !defined (COMPILE_FINAL_CUT) 55 #error "Only <final/final.h> can be included directly." 58 #include "final/fwidget.h" 71 using FWidget::setGeometry;
92 auto getClassName()
const ->
FString override;
93 template<
typename W
idgetT>
94 static auto getWindowWidget (WidgetT*) ->
FWindow*;
95 template<
typename W
idgetT>
96 static auto getWindowLayer (WidgetT*) -> int;
97 auto getWindowFocusWidget()
const ->
FWidget*;
100 void setWindowWidget (
bool =
true);
101 void unsetWindowWidget();
102 static void setActiveWindow (
FWindow*);
103 void setWindowFocusWidget (
FWidget*);
104 auto activateWindow (
bool =
true) -> bool;
105 void unsetActiveWindow()
const;
106 auto deactivateWindow() -> bool;
107 virtual void setResizeable (
bool =
true);
108 void unsetResizeable();
109 virtual void setMinimizable (
bool =
true);
110 void unsetMinimizable();
111 void setTransparentShadow (
bool =
true);
112 void unsetTransparentShadow();
113 void setShadow (
bool =
true);
115 void setAlwaysOnTop (
bool =
true);
116 void unsetAlwaysOnTop();
119 auto isZoomed()
const noexcept -> bool;
120 auto isMinimized()
const -> bool;
121 auto isWindowActive()
const noexcept -> bool;
122 auto isWindowHidden()
const -> bool;
123 auto isResizeable()
const -> bool;
124 auto isMinimizable()
const -> bool;
125 auto isAlwaysOnTop()
const -> bool;
126 auto hasTransparentShadow()
const -> bool;
127 auto hasShadow()
const -> bool;
130 void drawBorder()
override;
131 void show()
override;
132 void hide()
override;
133 void setX (
int,
bool =
true)
override;
134 void setY (
int,
bool =
true)
override;
135 void setPos (
const FPoint&,
bool =
true)
override;
136 void setWidth (std::size_t,
bool =
true)
override;
137 void setHeight (std::size_t,
bool =
true)
override;
138 void setSize (
const FSize&,
bool =
true)
override;
140 ,
bool =
true )
override;
141 void move (
const FPoint&)
override;
143 static auto getWindowWidgetAt (
int,
int) ->
FWindow*;
144 static void addWindow (
FWidget*);
145 static void delWindow (
const FWidget*);
147 static auto raiseWindow (
FWidget*) -> bool;
148 auto raiseWindow() -> bool;
149 static auto lowerWindow (
FWidget*) -> bool;
150 auto lowerWindow() -> bool;
151 virtual auto zoomWindow() -> bool;
152 virtual auto minimizeWindow() -> bool;
153 static void switchToPrevWindow (
const FWidget*);
154 static auto activatePrevWindow() -> bool;
155 void setShadowSize (
const FSize&)
override;
159 void adjustSize()
override;
162 static void setPreviousWindow (
FWindow*);
165 auto event (
FEvent*) ->
bool override;
166 virtual void onWindowActive (
FEvent*);
167 virtual void onWindowInactive (
FEvent*);
168 virtual void onWindowRaised (
FEvent*);
169 virtual void onWindowLowered (
FEvent*);
173 void createVWin() noexcept;
175 static void deleteFromAlwaysOnTopList (
const FWidget*);
176 static void processAlwaysOnTop();
178 static auto getWindowLayerImpl (
FWidget*) -> int;
179 static void activateTopWindow (
const FWindow*);
180 static auto isWindowActivatable (
const FWindow*,
const FWindow*) -> bool;
181 static void reactivateWindow (
FWindow*);
184 FWidget* win_focus_widget{
nullptr};
185 FRect normalGeometry{};
186 static FWindow* previous_window;
187 bool window_active{
false};
194 void closeDropDownMouseHandler (
const FMouseData&);
196 void unselectMenubarItemsMouseHandler (
const FMouseData&);
201 inline auto FWindow::getClassName()
const ->
FString 202 {
return "FWindow"; }
206 template<
typename W
idgetT>
207 inline auto FWindow::getWindowWidget (WidgetT* obj) ->
FWindow*
209 return getWindowWidgetImpl (static_cast<FWidget*>(obj));
213 template<
typename W
idgetT>
214 inline auto FWindow::getWindowLayer (WidgetT* obj) ->
int 216 return getWindowLayerImpl (static_cast<FWidget*>(obj));
220 inline void FWindow::unsetWindowWidget()
221 { setWindowWidget(
false); }
224 inline auto FWindow::deactivateWindow() ->
bool 225 {
return activateWindow(
false); }
228 inline void FWindow::unsetResizeable()
229 { setResizeable(
false); }
232 inline void FWindow::unsetMinimizable()
233 { setMinimizable(
false); }
236 inline void FWindow::unsetTransparentShadow()
237 { setTransparentShadow(
false); }
240 inline void FWindow::unsetShadow()
241 { setShadow(
false); }
244 inline void FWindow::unsetAlwaysOnTop()
245 { setAlwaysOnTop(
false); }
248 inline auto FWindow::isZoomed()
const noexcept ->
bool 252 inline auto FWindow::isWindowActive()
const noexcept ->
bool 253 {
return window_active; }
256 inline auto FWindow::isResizeable()
const ->
bool 257 {
return getFlags().feature.resizeable; }
260 inline auto FWindow::isMinimizable()
const ->
bool 261 {
return getFlags().feature.minimizable; }
264 inline auto FWindow::isAlwaysOnTop()
const ->
bool 265 {
return getFlags().visibility.always_on_top; }
268 inline auto FWindow::hasTransparentShadow()
const ->
bool 269 {
return getFlags().shadow.trans_shadow; }
272 inline auto FWindow::hasShadow()
const ->
bool 273 {
return getFlags().shadow.shadow; }
276 inline auto FWindow::getWindowWidgetAt (
const FPoint& pos) ->
FWindow*
277 {
return getWindowWidgetAt (pos.getX(), pos.getY()); }
280 inline auto FWindow::raiseWindow() ->
bool 281 {
return raiseWindow(
this); }
284 inline auto FWindow::lowerWindow() ->
bool 285 {
return lowerWindow(
this); }
288 inline void FWindow::setPreviousWindow (
FWindow* w)
289 { previous_window = w; }
Definition: class_template.cpp:25