acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
element.h
1// Injected/Split in acme (camilo) from apex(thomas) by camilo on ThomasMonth19-2021 12:46 BRT
2#pragma once
3
4
5#include "activation.h"
6#include "command_update_target.h"
7#include "acme/constant/user_interface.h"
8#include "acme/prototype/data/property_container.h"
9#include "acme/user/user/check.h"
10#include "acme/user/user/control.h"
11#include "acme/platform/session.h"
12#include "acme/user/user/text.h"
13#include "acme/filesystem/filesystem/file_dialog.h"
14#include "acme/handler/source.h"
15#include "acme/operating_system/window.h"
16//#include "acme/platform/message_box.h"
17#include "acme/platform/timer.h"
18#include "acme/prototype/geometry2d/rectangle.h"
19#include "acme/prototype/geometry2d/rectangle_array.h"
20#include "acme/user/experience/_constant.h"
21
22
23namespace user
24{
25
26
27 enum enum_window_type
28 {
29
30 e_window_type_window,
31 e_window_type_frame,
32 e_window_type_impact
33
34 };
35
36
37
38 enum enum_next
39 {
40
41 e_next_sibling,
42 e_next_proper,
43
44 };
45
46
47 class CLASS_DECL_ACME element :
48 virtual public ::object,
49 virtual public ::user::command_update_target,
50 virtual public ::timer_dispatch
51 {
52 public:
53
54
55 enum RepositionFlags
56 {
57
58 reposDefault = 0,
59 reposQuery = 1,
60 reposExtra = 2,
61 reposNoPosLeftOver = 0x8000
62
63 };
64
65
66 enum EProperty
67 {
68
69 PropertyBaseWndInterface = 0,
70 PropertyDrawBaseWndInterface
71
72 };
73
74
75 enum EGeneralEvent
76 {
77
78 GeneralEventPosCreate1,
79 GeneralEventPosCreate2,
80 GeneralEventPosCreate3,
81 GeneralEventPosCreate4,
82 GeneralEventPosCreate5
83
84 };
85
86 enum EOptimize
87 {
88
89 OptimizeNone,
90 OptimizeThis
91
92 };
93
94 enum AdjustType
95 {
96
97 adjustBorder = 0,
98 adjustOutside = 1
99
100 };
101
102
103 //class ::time m_timeFocusStart;
104 bool m_bUserElementOk;
105 //::user::interaction_base * m_puserprimitive;
106 //::user::interaction * m_puserinteraction;
107 //pointer< pointer_array < ::user::item > > m_puseritema;
108
109 ::user::check m_check;
110 ::user::text m_text;
111
112
113 element();
114 ~element() override;
115
116
117
118 virtual void create_window();
119 virtual void _create_window();
120
121
122 virtual ::user::check & check();
123
124 virtual ::user::text & text();
125
126
127 //void operator()(::timer * ptimer) override;
128
129 void operator()(::timer * ptimer) override;
130
131
132 virtual void create_message_queue(const ::scoped_string & scopedstrName);
133
134
135 virtual ::acme::user::interaction * acme_user_interaction();
136 virtual ::acme::windowing::window * acme_windowing_window();
137 virtual ::operating_system::window operating_system_window();
138
139
140 virtual ::user::interaction_base * user_interaction_base();
141 virtual ::windowing::window_base * windowing_window_base();
142
143
144 virtual ::user::interaction * user_interaction();
145 virtual ::windowing::window * windowing_window();
146
147
148
149
150 //virtual void set_config_per_second(::frequency dConfigFps);
151 //virtual ::frequency get_config_per_second();
152 //virtual ::frequency get_output_per_second();
153
154
155 //::pointer<::message::message>get_message(::user::enum_message eusermessage, ::wparam wparam, ::lparam lparam) override;
156 void destroy() override;
157
158 virtual ::acme::user::interaction * acme_host_interaction();
159
160 virtual ::user::interaction * host_interaction();
161
162 virtual ::acme::windowing::window * acme_host_window();
163
164 virtual ::windowing::window * host_window();
165
166 virtual ::user::form * get_form();
167
168 virtual ::user::form * get_parent_form();
169
170 virtual ::user::element * get_form_user_element();
171
172 virtual ::user::element * get_parent_form_user_element();
173
174 void enable_window(bool bEnable = true) override;
175
176 virtual void PreSubClassWindow();
177
178 virtual bool is_waiting_for_dialog_response();
179
180 virtual ::payload wait_for_dialog_response(const class ::time & timeTimeout = ::time::infinity());
181
182 virtual void set_dialog_response(const ::payload & payloadResult);
183
184 virtual ::payload get_dialog_response();
185
186
187
188
189 //#ifdef WINDOWS
190 // virtual character_count _009GetWindowText(wchar_t * pwsz, ::i32 n);
191 //#else
192 // virtual character_count _009GetWindowText(char_pointer psz, ::i32 n);
193 //#endif
194 // virtual character_count _009GetWindowTextLength();
195
196 virtual bool GetFocusRect(::i32_rectangle & rectangle);
197
198
199 virtual void window_minimize();
200 virtual void window_maximize(); // m_pwindow->m_puserinteraction->display(::e_display_zoomed);
201 virtual void window_full_screen(); // m_pwindow->m_puserinteraction->display(::e_display_full_screen);
202 virtual void window_restore(); // m_pwindow->m_puserinteraction->display(::e_display_normal);
203 virtual void window_close();
204
205
206 virtual void on_window_deiconified();
207 virtual void on_window_activated();
208 virtual void on_window_iconified();
209 virtual void on_window_deactivated();
210 virtual void on_window_shown();
211 virtual void on_window_hidden();
212
213
214 virtual ::e_display defer_window_get_best_display_deduction();
215
216
217 virtual void _on_window_simple_action(const_char_pointer pszActionName, ::user::activation_token * puseractivationtoken);
218
219
220 virtual void on_window_close();
221
222
223 virtual void set_cursor(enum_cursor ecursor);
224
225
226 virtual void set_mouse_capture();
227 virtual bool is_mouse_captured();
228 virtual bool has_mouse_capture();
229 virtual void release_mouse_capture();
230 virtual bool defer_release_mouse_capture();
231
232 //bool defer_perform_entire_reposition_process(::user::mouse * pmouse) override;
233
234 //bool defer_perform_entire_resizing_process(::experience::enum_frame eframeSizing, ::user::mouse * pmouse) override;
235
236 virtual bool defer_perform_entire_reposition_process(::user::mouse * pmouse);
237
238 virtual bool defer_perform_entire_resizing_process(const ::experience::e_frame & eframeSizing, ::user::mouse * pmouse);
239
240
241 virtual void defer_update_display();
242
243
244 virtual enum_control_type get_control_type();
245
246
247 virtual void add_fps_interest(::particle * pparticle);
248 virtual void erase_fps_interest(::particle * pparticle);
249 virtual bool is_fps_interest(::particle * pparticle);
250
251 virtual void display(::e_display edisplay = e_display_default, const ::user::activation & useractivation = {});
252
253
254 virtual string get_title();
255
256
257 virtual void show_software_keyboard(::user::element * pelement);
258
259 virtual void hide_software_keyboard(::user::element * pelement);
260
261 //virtual void UpdateWindow();
262
263 //svirtual void Invalidate(bool bErase = true);
264
265 virtual bool has_pending_redraw_flags();
266
267 virtual void default_message_handler(::message::message * pmessage);
268
269 virtual void message_handler(::message::message * pmessage);
270
271 //virtual lresult message_handler(MESSAGE * pmessage);
272
273 virtual void on_select();
274
275 virtual bool is_place_holder();
276
277 virtual ::f64 _001GetTopLeftWeightedOccludedOpaqueRate();
278
279
280 virtual bool _is_window() const;
281 virtual bool _is_this_window() const;
282
283 virtual ::user::interaction * first_child();
284 virtual ::user::interaction * last_child();
285 virtual ::user::interaction * last_sibling();
286 virtual ::user::interaction * next_sibling();
287 virtual ::user::interaction * previous_sibling();
288 virtual ::user::interaction * first_sibling();
289 virtual ::user::interaction * next_sibling(::user::interaction * pinteraction);
290 virtual ::user::interaction * previous_sibling(::user::interaction * pinteraction);
291
292 virtual ::user::interaction * bottom_child();
293 virtual ::user::interaction * top_child();
294 virtual ::user::interaction * bottom_sibling();
295 virtual ::user::interaction * under_sibling();
296 virtual ::user::interaction * above_sibling();
297 virtual ::user::interaction * top_sibling();
298 virtual ::user::interaction * above_sibling(::user::interaction * pinteraction);
299 virtual ::user::interaction * under_sibling(::user::interaction * pinteraction);
300
301
302 //virtual void mouse_hover_add(::user::interaction * pinterface);
303 //virtual bool mouse_hover_erase(::user::interaction * pinterface);
304
305 //virtual void _task_transparent_mouse_event();
306
307 virtual void CheckAutoCenter();
308
309 virtual void track_mouse_hover();
310 virtual void track_mouse_leave();
311
312 virtual void update_dialog_controls(channel * ptarget);
313 virtual void CenterWindow(::user::interaction * pAlternateOwner = nullptr);
314 //virtual atom run_modal_loop(::user::interaction * pinteraction, ::u32 dwFlags = 0);
315 //virtual atom RunModalLoop(::u32 dwFlags = 0);
316 //virtual atom _001RunModalLoop(::u32 dwFlags = 0);
317
318 // Dialog data support
319 virtual void update_data(bool bSaveAndValidate = true);
320
321
322 //virtual ::user::element * get_keyboard_focus();
323
324
325
326
327
328 virtual void _001UpdateWindow();
329
330 virtual void queue_selection_synchronization();
331
332 //virtual void window_apply_visual(const window_state & windowstate);
333
334 //virtual void sketch_to_layout();
335 //virtual void layout_to_design(bool & bUpdateBuffer, bool & bUpdateWindow);
336
337 virtual void design_down();
338 virtual void design_up();
339
340 virtual void fps_interest_stop();
341
342
343
344 //virtual void graphics_thread_post_redraw(bool bUpdateBuffer);
345
346 virtual void on_configuration_change(::user::element * pprimitiveSource);
347
348
349 //virtual void on_layout(::draw2d::graphics_pointer & pgraphics);
350 virtual void on_reposition();
351 virtual void on_size();
352 //virtual void on_show_window();
353
354 //virtual void BringToTop(::e_display edisplay);
355 //virtual bool BringWindowToTop();
356//
357//#ifdef WINDOWS_DESKTOP
358// virtual bool GetWindowPlacement(WINDOWPLACEMENT* puserinteractionpl);
359//
360// virtual bool SetWindowPlacement(const WINDOWPLACEMENT* puserinteractionpl);
361//
362//#endif
363
364 //virtual bool SendChildNotifyLastMsg(lresult* pResult = nullptr);
365
366
367
368
369 //virtual void subclass_window(oswindow posdata);
370 //virtual oswindow unsubclass_window();
371
372 virtual string get_class_name();
373
374
375 virtual void on_before_create_window(::acme::windowing::window * pacmewindowingwindow);
376 //virtual void on_create_window();
377
378 //virtual void create_host(enum_parallelization eparallelization);
379 //virtual void create_host();
380 virtual void create_child(::user::interaction * puserinteractionParent);
381
382 //virtual void create_window_ex(::pointer<::user::system>pcs, ::user::interaction * puiParent, const ::atom & atom);
383 //virtual void CalcWindowRect(::i32_rectangle * pClientRect,::u32 nAdjustType = adjustBorder);
384
385
386 //virtual bool IsTopParentActive();
387 virtual void ActivateTopParent();
388
389 //virtual void start_destroying_window();
390
391 virtual void destroy_window();
392
393
394 //#ifdef WINDOWS
395
396 // virtual void RedrawWindow(const ::i32_rectangle& rectangleUpdate = nullptr, ::draw2d::region * prgnUpdate = nullptr, ::u32 flags = RDW_INVALIDATE | RDW_ERASE);
397
398 //#else
399
400
401 //#endif
402
403
404 // virtual void UpdateWindow();
405 //virtual void SetRedraw(bool bRedraw = true);
406 //virtual bool GetUpdateRect(::i32_rectangle * prectangle,bool bErase = false);
407
408
409 virtual void host_post(const ::procedure & procedure);
410
411
412 //virtual lresult send(::message::message * pmessage);
413 //virtual bool post(::message::message * pmessage);
414
415 virtual lresult send_message(::user::enum_message eusermessage, ::wparam wparam = {}, ::lparam lparam = {}, const ::i32_point & point = {});
416
417 virtual lresult send_message(::message::message * pmessage);
418
419 virtual lresult message_call(::user::enum_message eusermessage, ::wparam wparam = {}, ::lparam lparam = {}, const ::i32_point & point = {});
420 virtual lresult message_call(::message::message * pmessage);
421
422 virtual void on_message(::message::message * pmessage);
423
424#ifdef LINUX
425
426 virtual lresult send_x11_event(void * phappening); // phappening <= XEvent *
427
428#endif
429
430 lresult message_handler(::user::enum_message eusermessage, ::wparam wparam = {}, ::lparam lparam = {}) override;
431
432 virtual void post_message(::user::enum_message eusermessage, ::wparam wparam = {}, ::lparam lparam = {});
433
434 virtual void post_simple_command(const enum_simple_command & ecommand, const ::lparam & lparam = 0);
435
436 //virtual bool ModifyStyle(::u32 dwRemove,::u32 dwAdd,::u32 nFlags = 0);
437 //virtual bool ModifyStyleEx(::u32 dwRemove,::u32 dwAdd,::u32 nFlags = 0);
438 //virtual bool _display(::e_display edisplay);
439
440 //virtual void SetWindowDisplayChanged();
441
442 // timer Functions
443 //virtual void set_timer(uptr uEvent, const class ::time & millisElapse, PFN_TIMER pfnTimer, bool bPeriodic = true, void * pdata = nullptr);
444 //virtual void kill_timer(uptr uEvent);
445
446
447 virtual bool is_host_top_level();
448
449
450 virtual bool is_ascendant(element * puiIsAscendant, bool bIncludeSelf);
451 virtual bool is_parent(element * puiIsParent);
452 virtual bool is_child(element * puiIsChild);
453 virtual bool is_descendant(element * puiIsDescendant, bool bIncludeSelf);
454
455 virtual bool is_descendant_of_or_owned_by(::user::element * puiAscendantCandidate, bool bIncludeSelf);
456 virtual bool is_ascendant_or_owner_of(::user::element * puiDescendantCandidate, bool bIncludeSelf);
457
458 virtual bool is_ascendant_of(element * puiIsDescendant, bool bIncludeSelf);
459 virtual bool is_parent_of(element * puiIsChild);
460 virtual bool is_child_of(element * puiIsParent);
461 virtual bool is_descendant_of(element * puiIsAscendant, bool bIncludeSelf);
462
463 virtual atom GetDlgCtrlId() const;
464 virtual atom SetDlgCtrlId(const ::atom & atom);
465
466 //
467 //#ifdef WINDOWS_DESKTOP
468 //
469 // virtual bool open_clipboard();
470 // virtual bool close_clipboard();
471 //
472 //#endif
473
474
475
476 //virtual void set_foreground_window();
477
478
479 virtual void set_rectangle(const ::i32_rectangle & rectangle);
480 virtual void set_position(const ::i32_point & point);
481 virtual void set_size(const ::i32_size & size);
482
483
484
485 virtual void redraw();
486 // virtual void set_mouse_capture();
487 // virtual bool has_mouse_capture();
488 // virtual void release_mouse_capture();
489
490
491 virtual void edit_on_set_focus(::user::interaction * pinteraction);
492 virtual void edit_on_kill_focus(::user::interaction * pinteraction);
493
494
495 //using ::user::text::get_text;
496// using ::user::drag_client::get_text;
497
498
499 virtual void set_interaction_rectangle(const ::i32_rectangle & rectangle);
500
501 virtual ::i32_rectangle get_rectangle();
502 virtual ::i32_rectangle get_window_rectangle();
503
504
505 virtual character_count get_window_text(char_pointer pszStringBuf, character_count nMaxCount);
506
507 virtual string get_window_text();
508 virtual void get_window_text(string & rString);
509 virtual character_count get_window_text_length();
510
511
512 //virtual bool _is_window_visible();
513 virtual bool is_this_visible(enum_layout elayout);
514 //virtual bool is_window_enabled() const;
515
516
517
518
519 virtual bool _001IsPointInside(const ::i32_point & point);
520 virtual ::user::interaction * _001FromPoint(::i32_point point, bool bTestedIfParentVisible = false);
521
522 virtual void OnLinkClick(const ::scoped_string & scopedstr, const ::scoped_string & scopedstrTarget = nullptr);
523
524 virtual ::user::interaction * get_child_by_name(const ::scoped_string & scopedstrName, ::collection::index iItem = -1, ::i32 iLevel = -1);
525 virtual ::user::interaction * get_child_by_id(const ::atom & atom, ::collection::index iItem = -1, ::i32 iLevel = -1);
526 virtual ::user::element * get_primitive_by_id(const ::atom & atom, ::collection::index iItem = -1, ::i32 iLevel = -1);
527
528
529
530 virtual ::acme::user::interaction * acme_get_wnd();
531 virtual ::user::interaction * get_wnd();
532 virtual ::user::interaction * get_wnd(::u32 nCmd);
533 //virtual ::windowing::window * get_impl() const;
534 //virtual ::task * get_task() override;
535
536 virtual ::user::element * set_parent(::user::element * pinteraction);
537 virtual ::user::element * set_owner(::user::element * pinteraction);
538
539
540 virtual ::windowing::window * window_get_parent();
541
542 virtual ::user::interaction * get_parent();
543 virtual ::user::interaction * get_owner();
544 virtual ::user::interaction * get_parent_owner();
545 virtual ::user::interaction * get_parent_or_owner();
546 virtual ::user::interaction * get_top_level_owner();
547
548
549 virtual ::user::interaction * _top_level();
550
551
552 virtual bool is_top_level_window();
553
554 virtual void send_message_to_descendants(::user::enum_message eusermessage, ::wparam wparam = {}, ::lparam lparam = {}, bool bDeep = true, bool bOnlyPerm = false);
555
556 virtual void route_message_to_descendants(::message::message * pmessage);
557 virtual void pre_translate_message(::message::message * pmessage);
558
559
560 virtual ::i32 get_descendant_level(::user::element * puserelement);
561 //virtual bool is_descendant(const ::user::element * pinteraction,bool bIncludeSelf = false) const;
562 virtual ::user::interaction * get_focusable_descendant();
563
564 virtual void RepositionBars(::draw2d::graphics_pointer &pgraphics, ::u32 nIDFirst, ::u32 nIDLast,
565 ::user::interaction *puserinteractionLeftOver = nullptr, ::u32 nFlag = reposDefault,
566 ::i32_rectangle *prectParam = nullptr, const ::i32_rectangle &rectangleX = {},
567 bool bStretch = true);
568
569 virtual ::user::interaction * ChildWindowFromPoint(const ::i32_point & point);
570 virtual ::user::interaction * ChildWindowFromPoint(const ::i32_point & point, ::u32 nFlags);
571
572
573 //#ifdef WINDOWS_DESKTOP
574 // virtual ::user::interaction * get_next_window(::u32 nFlag = GW_HWNDNEXT);
575 //#else
576 //virtual ::user::interaction * get_next_window(::u32 nFlag = 0);
577
578 virtual ::user::interaction * get_next_sibling_window();
579
580 //#endif
581
582 virtual void set_tool_window(bool bSet = true);
583
584
585 virtual ::user::interaction * get_next_window(bool bIgnoreChildren = false, ::user::interaction * puiInteractionStop = nullptr);
586 virtual ::user::interaction * get_window(enum_next enext);
587
588
589 virtual ::user::interaction * GetLastActivePopup();
590
591
592 virtual bool is_message_only_window();
593
594 virtual void pre_subclass_window();
595
596 //virtual void post_non_client_destroy();
597
598
599 //virtual lresult default_window_procedure();
600 //virtual void default_window_procedure(::message::message * pmessage);
601
602
603 //virtual bool call_message_handler(const ::atom & atom, const ::wparam & wparam = {}, const ::lparam & lparam = 0, const ::i32_point & point = {}, lresult * presult = nullptr);
604
605
606 //virtual void GuieProc(::message::message * pmessage);
607
608
609
610 //virtual bool attach(::windowing::window * pwindow_New);
611 virtual void * detach_win32_HWND();
612
613
614 virtual ::windowing::window * window();
615
616 //virtual ::f64_size _001CalculateFittingSize(::draw2d::graphics_pointer & pgraphics);
617 //virtual ::f64_size _001CalculateAdjustedFittingSize(::draw2d::graphics_pointer & pgraphics);
618
619
620 //virtual bool can_merge(::user::interaction * pinteraction);
621 //virtual bool merge(::user::interaction * pinteraction);
622
623
624 //virtual void _001OnTriggerMouseInside();
625
626 virtual void _000OnMouseLeave(::message::message * pmessage);
627
628 //#ifdef UNIVERSAL_WINDOWS
629 // Agile<::winrt::Windows::UI::Core::CoreWindow> get_os_window();
630 //#endif
631
632
633 virtual void set_context_org(::draw2d::graphics_pointer & pgraphics);
634
635 virtual void viewport_screen_to_client(::i32_sequence2 & sequence);
636 virtual void viewport_client_to_screen(::i32_sequence2 & sequence);
637 virtual void viewport_client_to_screen(::i32_rectangle & point);
638 virtual void viewport_screen_to_client(::i32_rectangle & point);
639
640
641 virtual string get_window_default_matter();
642 virtual string get_window_icon_matter();
643 virtual ::u32 get_window_default_style();
644 virtual enum_window_type get_window_type();
645
646
647 virtual void add_child_handler(::particle * pparticle, const ::atom & atomChild, bool bPriority = false);
648
649
650 virtual bool is_selected(::item * pitem);
651
652 void handle(::topic * ptopic, ::handler_context * phandlercontext) override;
653
654 //virtual void on_notify_control_event(control_event* phappening);
655
656
657
658 //virtual void exit_iconify();
659 //virtual void exit_full_screen();
660
661
662 //virtual void defer_exit_iconify();
663 //virtual void defer_exit_full_screen();
664
665
666 //virtual void window_enable_full_screen(bool bEnable = true);
667 //virtual bool layout().is_full_screen();
668 //virtual bool window_is_full_screen_enabled();
669 //virtual bool onscreen_is_zoomed();
670 //virtual bool onscreen_is_iconic();
671
672 //virtual bool display(::e_display edisplay);
673
674 //virtual edisplay get_display();
675 //virtual edisplay get_previous_display();
676
677
678 //virtual bool defer_set_appearance(::e_display edisplay);
679 //virtual bool set_appearance(::e_display edisplay);
680 //virtual bool set_previous_display(::e_display edisplay);
681
682
683 //virtual void show_keyboard(bool bShow = true);
684
685 //virtual void ping();
686
687
688 //virtual bool has_pending_graphical_update();
689 virtual void on_after_graphical_update();
690
691
692 virtual void set_bitmap_source(const ::scoped_string & scopedstrBitmapSource);
693 virtual void clear_bitmap_source();
694
695
696 virtual bool _001OnBeforeEnterIconic();
697 virtual bool _001OnBeforeEnterNormal();
698 virtual bool _001OnBeforeEnterZoomed();
699 virtual bool _001OnBeforeEnterFullScreen();
700
701
702 virtual bool _001OnBeforeEnterAppearance();
703
704
705 virtual void _001OnAfterEnterIconic();
706 virtual void _001OnAfterEnterNormal();
707 virtual void _001OnAfterEnterZoomed();
708 virtual void _001OnAfterEnterFullScreen();
709
710
711 virtual void _001OnAfterEnterAppearance();
712
713
714 virtual bool _001OnBeforeExitIconic();
715 virtual bool _001OnBeforeExitNormal();
716 virtual bool _001OnBeforeExitZoomed();
717 virtual bool _001OnBeforeExitFullScreen();
718
719
720 virtual bool _001OnBeforeExitAppearance();
721
722
723 virtual void _001OnAfterExitIconic();
724 virtual void _001OnAfterExitNormal();
725 virtual void _001OnAfterExitZoomed();
726 virtual void _001OnAfterExitFullScreen();
727
728
729 virtual void _001OnAfterExitAppearance();
730
731
732 //virtual lresult send_message(const ::user::enum_message & emessage, const ::wparam & wparam = 0, const ::lparam & lparam = 0);
733 //virtual bool post_message(const ::user::enum_message & emessage, const ::wparam & wparam = 0, const ::lparam & lparam = 0);
734 //virtual void message_handler(::message::message * pmessage);
735 //virtual void pre_translate_message(::message::message * pmessage);
736
737
738
739 virtual void on_add_owned(::user::element * pprimitive);
740
741
742
743
744 // element();
745 // virtual ~element();
746
747
748 /*virtual void pre_translate_message(::message::message * pmessage);
749 */
750
751 virtual ::f32 preferred_dpi_x();
752
753 virtual ::f32 preferred_dpi_y();
754
755 virtual ::f32 preferred_density();
756
757
758
759
760
761 virtual void set_need_redraw(const ::i32_rectangle_array_base & rectangleaScreenNeedRedraw = {}, ::draw2d::graphics * pgraphics = nullptr, ::function < void() > function = nullptr, bool bAscendants = true);
762 virtual void set_need_load_form_data();
763 virtual void set_need_save_form_data();
764 virtual void post_redraw(bool bAscendants = true);
765 //virtual void hide();
766
767 // keyboard focus
768 //virtual bool on_keyboard_focus(::user::element * pfocus);
769 virtual void keyboard_focus_OnTimer(::i32 iTimer);
770 virtual void keyboard_focus_OnChar(::message::message * pmessage);
771 virtual void keyboard_focus_OnSysChar(::message::message * pmessage);
772 virtual void keyboard_focus_OnKeyDown(::message::message * pmessage);
773 virtual void keyboard_focus_OnKeyUp(::message::message * pmessage);
774
775
776
777 template < class T >
778 pointer < T > get_typed_parent()
779 {
780
781 ASSERT_OK(this);
782
783 pointer < T > p;
784
785 auto puiParent = get_parent_primitive(); // start with one parent up
786
787 while (puiParent != nullptr)
788 {
789
790 p = puiParent;
791
792 if (p.is_set())
793 {
794
795 return p;
796
797 }
798
799 puiParent = puiParent->get_parent_primitive();
800
801 }
802
803 return nullptr;
804
805 }
806
807 //virtual ::user::interaction * get_parent_window();
808
809 virtual ::user::element * get_parent_primitive();
810
811 virtual ::user::prototype_impl * get_primitive_impl();
812
813 virtual ::user::interaction * get_first_child_window();
814
815
816 virtual bool keyboard_focus_is_focusable();
817 virtual bool keyboard_focus_OnKillFocus(::acme::windowing::window * pacmewindowingwindowNew);
818 virtual bool keyboard_focus_OnChildKillFocus();
819 virtual element * keyboard_get_next_focusable(element * pfocus = nullptr, bool bSkipChild = false, bool bSkipSiblings = false, bool bSkipParent = false);
820 //virtual element * get_keyboard_focus() const;
821 virtual void set_keyboard_focus();
822 //virtual void erase_keyboard_focus();
823 //virtual void clear_keyboard_focus(::user::element * pelementGainingFocusIfAny = nullptr);
824 virtual ::user::element * get_keyboard_focus();
825 virtual element * keyboard_set_focus_next(bool bSkipChild = false, bool bSkipSiblings = false, bool bSkipParent = false);
826 //virtual bool has_keyboard_focus();
827
828 // mouse focus
829
830 virtual void mouse_focus_OnLButtonUp(::message::message * pmessage);
831
832
833 virtual bool _001CanEnterScreenSaver();
834
835
836 //void operator()(::timer * ptimer) override;
837
838 virtual void on_reset_focus_start_tick();
839
840
841 //virtual bool _is_window() const;
842
843
844
845 //element();
846 //virtual ~element();
847
848 //inline oswindow get_safe_handle() const;
849
850#ifdef WINDOWS_DESKTOP
851
852 //virtual bool GetWindowPlacement(WINDOWPLACEMENT * puserinteractionpl);
853
854
855 //virtual bool SetWindowPlacement(const WINDOWPLACEMENT * puserinteractionpl);
856
857
858#endif
859
860 //virtual bool SetPlacement(const ::i32_rectangle & rectangle, ::u32 nFlags = SWP_SHOWWINDOW);
861
862
863 virtual ::i32 get_total_page_count(::handler_context * pcontext);
864
865
866 virtual void edit_on_text(const ::scoped_string & scopedstr);
867 virtual void edit_on_sel(character_count iBeg, character_count iEnd);
868 virtual void insert_text(const ::scoped_string & scopedstr, bool bForceNewStep, const ::action_context & context);
869
870
871 virtual void on_text_composition(const ::scoped_string & scopedstr);
872 virtual void on_text_commit(const ::scoped_string & scopedstr);
873 virtual void on_text_composition_done();
874 //virtual bool is_text_composition_active();
875
876 virtual void set_input_content_rect(const i32_rectangle & rectangle);
877 virtual void set_input_selection_rect(const i32_rectangle & rectangle);
878
879 virtual i32_rectangle get_input_content_rect();
880 virtual i32_rectangle get_input_selection_rect();
881
882 virtual bool InputConnectionBeginBatchEdit(bool bSuper);
883 virtual bool InputConnectionEndBatchEdit(bool bSuper);
884 virtual bool InputConnectionCommitText(const ::scoped_string & scopedstr, character_count iNewCursorPosition, bool bSuper);
885 virtual bool InputConnectionDeleteSurroundingText(character_count iBeforeLength, character_count iAfterLength, bool bSuper);
886 virtual bool InputConnectionSetComposingText(const ::scoped_string & scopedstr, character_count iNewCursorPosition, bool bSuper);
887 virtual bool InputConnectionSetComposingRegion(character_count iStart, character_count iEnd, bool bSuper);
888 virtual bool InputConnectionSetSelection(character_count iStart, character_count iEnd, bool bSuper);
889 virtual bool InputConnectionFinishComposingText(bool bSuper);
890
891 //void operator()(::timer * ptimer) override;
892
893 //virtual bool enable_window(bool bEnable );
894
895
896
897 //virtual void set_window_text(const ::scoped_string & scopedstrString);
898
899 //virtual void set_check(enum_check echeck, const ::action_context & action_context);
900 //virtual void set_text(const ::scoped_string & scopedstrText, const ::action_context & action_context);
901
902 virtual ::user::element * first_child_user_element();
903 virtual ::user::element * top_user_element();
904 virtual ::user::element * under_user_element();
905 virtual ::user::element * above_user_element();
906 virtual ::user::element * next_user_element();
907 virtual ::user::element * previous_user_element();
908
909
910 virtual void pick_single_file_to_save(
911 const ::file::file_dialog_filter & filedialogfiltera,
912 const ::function < void(::file::file_dialog* pdialog) > & function);
913
914
915 virtual void pick_single_file_to_open(
916 const ::file::file_dialog_filter & filedialogfiltera,
917 const ::function < void(::file::file_dialog* pdialog) > & function);
918
919
920 virtual void pick_multiple_file(
921 const ::file::file_dialog_filter & filedialogfiltera,
922 const ::function < void(::file::file_dialog* pdialog) > & function);
923
924
925 virtual void pick_single_folder(
926 const ::function < void(::file::file_dialog* pdialog) > & function);
927
928 virtual bool update_impact();
929 virtual bool on_impact_update();
930 virtual bool on_before_impact_update();
931 virtual void on_after_impact_update();
932
933
934 virtual bool scroll_bar_x_visible(enum_layout elayout = e_layout_design);
935 virtual bool scroll_bar_y_visible(enum_layout elayout = e_layout_design);
936
937
938 virtual ::trace_statement & raw_trace_statement_prefix(::trace_statement & statement) const;
939 ::trace_statement & trace_statement_prefix(::trace_statement & statement) const override;
940
941
942 virtual bool on_window_create(void * pCREATESTRUCT);
943 virtual void on_window_position(const ::i32_point & point);
944 virtual void on_window_size(const ::i32_size & size);
945 virtual void on_window_set_focus();
946 virtual void on_window_show(bool bShow, int iDetail);
947 virtual bool on_window_activate(::i32 iActivate, bool bMinimized, const ::operating_system::window & operatingsystemwindow);
948 virtual bool on_window_mouse_activate(::i32 & iResult, const ::operating_system::window & operatingsystemwindowTop,
949 ::i32 iHitTest, ::i32 iMessage);
950
951
952 virtual bool is_window_visible();
953 virtual bool is_window_active();
954 virtual bool is_window_stored_iconic(); // m_pwindow->m_puserinteraction->const_layout().window().display() == e_display_iconic
955 virtual bool is_window_zoomed();
956 virtual bool is_window_full_screen();
957 virtual bool is_window_iconic();
958 virtual ::f32 get_window_scale();
959
960
961 virtual ::i32_point screen_to_window_client(const ::i32_point & point);
962 virtual ::i32_rectangle screen_to_window_client(const ::i32_rectangle & rectangle);
963 virtual ::i32_point window_client_to_screen(const ::i32_point & point);
964 virtual ::i32_rectangle window_client_to_screen(const ::i32_rectangle & rectangle);
965
966
967 virtual void set_active_window();
968 virtual void set_window_text(const ::scoped_string & scopedstr);
969 virtual void set_window_text_source(const ::a_string_function & astringfunction);
970 virtual void set_window_style(::i32 iStyle);
971 virtual ::i64 get_window_style();
972 virtual void show_window(::user_interface::enum_show_window eshowwindow);
973 virtual void set_window_position(const ::operating_system::window & operatingsystemwindow, const ::i32_point & point, const ::i32_size & size, ::i32 iSetWindowPosFlags);
974 virtual void window_invalidate_rect(const ::i32_rectangle * prectangle, bool bErase);
975 virtual void update_window();
976 virtual void redraw_window(const ::i32_rectangle * prectangle, void * pHRGN, ::i32 iRedrawFlags);
977 virtual void window_set_focus();
978 virtual void set_foreground_window(::user::activation_token *puseractivationtoken);
979 virtual ::i32_rectangle window_get_client_rect();
980 virtual ::i32_rectangle get_window_rect();
981 virtual bool defer_update_system_menu();
982 virtual void dump_operating_system_child_window_hierarchy();
983
984
985
986 };
987
988
989
990} // namespace user
991
992
Definition window.h:50
Definition atom.h:237
Definition file_dialog.h:46
Definition _template_forward_declaration.h:271
Definition lparam.h:9
Definition aaa_timer.h:9
Definition topic.h:17
virtual bool is_message_only_window()
}
Definition element.cpp:1577
virtual void update_data(bool bSaveAndValidate=true)
Definition element.cpp:3389
Definition aaa_item.h:13
Definition wparam.h:10
Created by camilo on 2026-05-28 12:34 <3ThomasBorregaardSørensen!! Mummi!! Bilbo!!
Definition _.h:67