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>
97 template<
typename W
idgetT>
98 static auto getWindowLayer (WidgetT*) -> int;
99 auto getWindowFocusWidget()
const ->
FWidget*;
102 void setWindowWidget (
bool =
true);
103 void unsetWindowWidget();
104 static void setActiveWindow (
FWindow*);
105 void setWindowFocusWidget (
FWidget*);
106 auto activateWindow (
bool =
true) -> bool;
107 void unsetActiveWindow()
const;
108 auto deactivateWindow() -> bool;
109 virtual void setResizable (
bool =
true);
110 void unsetResizable();
111 virtual void setMinimizable (
bool =
true);
112 void unsetMinimizable();
113 void setTransparentShadow (
bool =
true);
114 void unsetTransparentShadow();
115 void setShadow (
bool =
true);
117 void setAlwaysOnTop (
bool =
true);
118 void unsetAlwaysOnTop();
121 auto isZoomed()
const noexcept -> bool;
122 auto isMinimized()
const -> bool;
123 auto isWindowActive()
const noexcept -> bool;
124 auto isWindowHidden()
const -> bool;
125 auto isResizable()
const -> bool;
126 auto isMinimizable()
const -> bool;
127 auto isAlwaysOnTop()
const -> bool;
128 auto hasTransparentShadow()
const -> bool;
129 auto hasShadow()
const -> bool;
132 void drawBorder()
override;
133 void show()
override;
134 void hide()
override;
135 void setX (
int,
bool =
true)
override;
136 void setY (
int,
bool =
true)
override;
137 void setPos (
const FPoint&,
bool =
true)
override;
138 void setWidth (std::size_t,
bool =
true)
override;
139 void setHeight (std::size_t,
bool =
true)
override;
140 void setSize (
const FSize&,
bool =
true)
override;
142 ,
bool =
true )
override;
143 void move (
const FPoint&)
override;
145 static auto getWindowWidgetAt (
int,
int) ->
FWindow*;
146 static void addWindow (
FWidget*);
147 static void delWindow (
const FWidget*);
149 static auto raiseWindow (
FWidget*) -> bool;
150 auto raiseWindow() -> bool;
151 static auto lowerWindow (
FWidget*) -> bool;
152 auto lowerWindow() -> bool;
153 virtual auto zoomWindow() -> bool;
154 virtual auto minimizeWindow() -> bool;
155 static void switchToPrevWindow (
const FWidget*);
156 static auto activatePrevWindow() -> bool;
157 void setShadowSize (
const FSize&)
override;
161 void adjustSize()
override;
164 static void setPreviousWindow (
FWindow*);
167 auto event (
FEvent*) ->
bool override;
168 virtual void onWindowActive (
FEvent*);
169 virtual void onWindowInactive (
FEvent*);
170 virtual void onWindowRaised (
FEvent*);
171 virtual void onWindowLowered (
FEvent*);
175 void createVWin() noexcept;
177 static void deleteFromAlwaysOnTopList (
const FWidget*);
178 static void processAlwaysOnTop();
181 static auto getWindowLayerImpl (
FWidget*) -> int;
182 static void activateTopWindow (
const FWindow*);
183 static auto isWindowActivatable (
const FWindow*,
const FWindow*) -> bool;
184 static void reactivateWindow (
FWindow*);
187 FWidget* win_focus_widget{
nullptr};
188 FRect normalGeometry{};
189 static FWindow* previous_window;
190 bool window_active{
false};
197 void closeDropDownMouseHandler (
const FMouseData&);
199 void unselectMenubarItemsMouseHandler (
const FMouseData&);
204 inline auto FWindow::getClassName()
const ->
FString 205 {
return "FWindow"; }
208 template<
typename W
idgetT>
209 inline auto FWindow::getWindowWidget (WidgetT* obj) ->
FWindow*
211 return getWindowWidgetImpl (static_cast<FWidget*>(obj));
215 template<
typename W
idgetT>
216 inline auto FWindow::getWindowWidget (WidgetT* obj,
const FWidgetFlags& search_flags) ->
FWindow*
218 return getWindowWidgetImpl (static_cast<FWidget*>(obj), search_flags);
222 template<
typename W
idgetT>
223 inline auto FWindow::getWindowLayer (WidgetT* obj) ->
int 225 return getWindowLayerImpl (static_cast<FWidget*>(obj));
229 inline void FWindow::unsetWindowWidget()
230 { setWindowWidget(
false); }
233 inline auto FWindow::deactivateWindow() ->
bool 234 {
return activateWindow(
false); }
237 inline void FWindow::unsetResizable()
238 { setResizable(
false); }
241 inline void FWindow::unsetMinimizable()
242 { setMinimizable(
false); }
245 inline void FWindow::unsetTransparentShadow()
246 { setTransparentShadow(
false); }
249 inline void FWindow::unsetShadow()
250 { setShadow(
false); }
253 inline void FWindow::unsetAlwaysOnTop()
254 { setAlwaysOnTop(
false); }
257 inline auto FWindow::isZoomed()
const noexcept ->
bool 261 inline auto FWindow::isWindowActive()
const noexcept ->
bool 262 {
return window_active; }
265 inline auto FWindow::isResizable()
const ->
bool 266 {
return getFlags().feature.resizable; }
269 inline auto FWindow::isMinimizable()
const ->
bool 270 {
return getFlags().feature.minimizable; }
273 inline auto FWindow::isAlwaysOnTop()
const ->
bool 274 {
return getFlags().visibility.always_on_top; }
277 inline auto FWindow::hasTransparentShadow()
const ->
bool 278 {
return getFlags().shadow.trans_shadow; }
281 inline auto FWindow::hasShadow()
const ->
bool 282 {
return getFlags().shadow.shadow; }
285 inline auto FWindow::getWindowWidgetAt (
const FPoint& pos) ->
FWindow*
286 {
return getWindowWidgetAt (pos.getX(), pos.getY()); }
289 inline auto FWindow::raiseWindow() ->
bool 290 {
return raiseWindow(
this); }
293 inline auto FWindow::lowerWindow() ->
bool 294 {
return lowerWindow(
this); }
297 inline void FWindow::setPreviousWindow (
FWindow* w)
298 { previous_window = w; }
Definition: class_template.cpp:25