44 class CLASS_DECL_ACME interaction :
45 virtual public ::user::element,
46 virtual public ::user::drag_client,
47 virtual public ::source,
48 virtual public ::user::check,
49 virtual public ::user::text
58 bool m_bMessageOnlyWindow : 1;
60 bool m_bHasOwnWindow : 1;
61 bool m_bWindowCreated : 1;
63 ::u32 m_uFlagsAcmeUserInteraction;
66 ::pointer < ::acme::windowing::window > m_pacmewindowingwindow;
67 ::pointer < ::acme::user::interaction > m_pacmeuserinteractionParent;
68 ::pointer < ::acme::user::interaction > m_pacmeuserinteractionOwner;
69 ::pointer <::pointer_array < ::acme::user::interaction >> m_pacmeuserinteractionaChildren;
70 ::pointer <::pointer_array < ::acme::user::interaction >> m_pacmeuserinteractionaChildrenToDestroy;
78 bool m_bDefaultNcHitTest;
85 void * m_pHICON_Small;
102 interaction(
const interaction &) =
delete;
113 void create_window()
override;
115 void _create_window()
override;
117 virtual void create_window_object();
119 virtual void on_create_window_object();
123 void destroy_window()
override;
125 virtual void set_children_to_destroy_unlocked();
127 bool is_host_top_level()
override;
129 virtual bool is_window();
131 virtual void on_dialog_result(const ::payload & payloadResult);
133 virtual ::i32_rectangle initial_frame_rectangle();
144 virtual ::i64 get_style_for_creating_window();
145 virtual ::i64 get_ex_style_for_creating_window();
150 virtual ::micro::theme * micro_theme();
152#ifdef WINDOWS_DESKTOP
155 virtual ::windows::window_class _get_window_class();
190 virtual ::i32_point origin();
208 virtual ::acme::user::interaction * acme_hit_test(::user::mouse * pmouse, ::user::e_zorder ezorder);
209 virtual ::acme::user::interaction * on_acme_hit_test(const ::i32_point & point, ::user::e_zorder ezorder);
211 virtual ::i32_rectangle get_client_rectangle();
212 virtual ::i32_size get_window_minimum_size();
220 virtual bool is_keyboard_focusable();
221 virtual bool has_keyboard_focus();
223 void set_mouse_capture()
override;
224 bool is_mouse_captured()
override;
225 bool has_mouse_capture()
override;
226 void release_mouse_capture()
override;
229 virtual bool on_window_mouse_move(const ::i32_point & point, const ::i32_point & pointAbsolute);
231 virtual void on_mouse_enter();
232 virtual void back_on_mouse_move(::user::mouse * pmouse);
233 virtual void fore_on_mouse_move(::user::mouse * pmouse);
234 virtual void on_mouse_leave();
299 virtual ::pointer < ::operating_system::a_system_menu > create_system_menu(
bool bContextual =
true);
302 void handle(
::topic * ptopic, ::handler_context * phandlercontext)
override;
310 virtual bool is_child_interaction();
314 ::operating_system::window operating_system_window()
override;
316 virtual ::acme::user::interaction * acme_user_parent();
355 void on_initialize_particle()
override;
365 virtual void implementation_message_loop_step();
400 virtual ::shift_int host_to_client();
401 virtual ::shift_int client_to_host();
403 virtual ::shift_int absolute_to_client();
404 virtual ::shift_int client_to_absolute();
409 void drag_set_capture()
override;
410 bool on_drag_start(::i32_point & point, ::user::mouse * pmouse, ::item * pitem)
override;
411 ::i32_point drag_mouse_cursor_position(::item * pitem, const ::i32_point & point)
override;
412 bool drag_shift(::item * pitem, ::user::mouse * pmouse)
override;
413 bool drag_hover(::item * pitem)
override;
414 void drag_release_capture()
override;
415 void drag_set_cursor(::item * pitem, ::user::mouse * pmouse)
override;
425 void display(::e_display edisplay, const ::user::activation& useractivation)
override;
427 virtual void display_temporary_file_with_text(const ::scoped_string & scopedstr);
440 void set_position(const ::i32_point & point)
override;
442 void destroy()
override;
444 void post_redraw(
bool bAscendants =
true)
override;
446 void redraw()
override;
449 ::i32_rectangle get_window_rectangle()
override;
451 ::i32_rectangle get_rectangle()
override;
459 void set_cursor(enum_cursor ecursor)
override;
461 virtual void synchronize_composited_nano_window();
465 virtual bool is_popup_window()
const;
469 void get_text_selection(character_count & iBeg, character_count & iEnd)
const override;
470 virtual void get_text_selection(character_count & iBeg, character_count & iEnd, character_count & iComposingStart, character_count & iComposingEnd)
const;
471 virtual ::collection::index plain_edit_sel_to_column(::draw2d::graphics_pointer & pgraphics, character_count iSel);
472 virtual ::collection::index plain_edit_sel_to_column_x(::draw2d::graphics_pointer & pgraphics, character_count iSel, ::i32 & x);
473 virtual ::collection::index plain_edit_sel_to_line(::draw2d::graphics_pointer & pgraphics, character_count iSel);
474 virtual ::collection::index plain_edit_sel_to_line_x(::draw2d::graphics_pointer & pgraphics, character_count iSel, ::i32 & x);
475 virtual character_count plain_edit_line_column_to_sel(::draw2d::graphics_pointer & pgraphics, ::collection::index iLine, ::collection::index iColumn);
476 virtual character_count plain_edit_line_x_to_sel(::draw2d::graphics_pointer & pgraphics, ::collection::index iLine, ::i32 x);
477 virtual ::collection::index plain_edit_char_to_line(::draw2d::graphics_pointer & pgraphics, character_count iSel);
480 ::trace_statement & raw_trace_statement_prefix(::trace_statement & statement)
const override;
491 bool is_window_zoomed()
override;
504 void _on_window_simple_action(const_char_pointer pszActionName, ::user::activation_token * puseractivationtoken)
override;
526 void main_post(const ::procedure & procedure)
override;
529 virtual bool should_use_desktop_ambient_like_control_box()
const;
532 virtual void on_control_box_close();
533 virtual void on_control_box_minimize();
534 virtual void on_control_box_zoom();
540 void on_window_size(const ::i32_size & size)
override;
541 void on_window_set_focus()
override;
542 void on_window_show(
bool bShow,
int iDetail)
override;
543 bool on_window_activate(::i32 iActivate,
bool bMinimized, const ::operating_system::window & operatingsystemwindow)
override;
544 bool on_window_mouse_activate(::i32 & iResult, const ::operating_system::window & operatingsystemwindowTop, ::i32 iHitTest, ::i32 iMessage)
override;
547 bool is_window_visible()
override;
548 bool is_window_iconic()
override;
549 ::f32 get_window_scale()
override;
552 ::i32_point screen_to_window_client(const ::i32_point & point)
override;
553 ::i32_rectangle screen_to_window_client(const ::i32_rectangle & rectangle)
override;
554 ::i32_point window_client_to_screen(const ::i32_point & point)
override;
555 ::i32_rectangle window_client_to_screen(const ::i32_rectangle & rectangle)
override;
559 void set_active_window()
override;
560 void set_window_text(const ::scoped_string & scopedstrString)
override;
561 void set_window_style(::i32 iStyle)
override;
562 ::i64 get_window_style()
override;
563 void show_window(::i32 iShowFlags)
override;
564 void set_window_position(const ::operating_system::window & operatingsystemwindow, const ::i32_point & point, const ::i32_size & size, ::i32 iSetWindowPosFlags)
override;
565 void window_invalidate_rect(const ::i32_rectangle * prectangle,
bool bErase)
override;
566 void update_window()
override;
567 void redraw_window(const ::i32_rectangle * prectangle,
void * pHRGN, ::i32 iRedrawFlags)
override;
568 void window_set_focus()
override;
569 void set_foreground_window(::user::activation_token * puseractivationtoken)
override;
570 ::i32_rectangle window_get_client_rect()
override;
571 ::i32_rectangle get_window_rect()
override;
572 bool defer_update_system_menu()
override;
573 void dump_operating_system_child_window_hierarchy()
override;