Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/private/window.h

    r25f26600 ra927af7a  
    11/*
    2  * Copyright (c) 2020 Jiri Svoboda
     2 * Copyright (c) 2026 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    3838#define _UI_PRIVATE_WINDOW_H
    3939
     40#include <adt/list.h>
    4041#include <errno.h>
     42#include <congfx/console.h>
    4143#include <display.h>
    4244#include <gfx/context.h>
     
    4446#include <io/pos_event.h>
    4547#include <memgfx/memgc.h>
     48#include <memgfx/xlategc.h>
     49#include <types/common.h>
     50#include <types/ui/cursor.h>
     51#include <types/ui/window.h>
     52
     53/** UI window flags. */
     54typedef enum {
     55        /** Window is maximized */
     56        uiwf_maximized = 0x1
     57} ui_window_flags_t;
    4658
    4759/** Actual structure of window.
     
    5264        /** Containing user interface */
    5365        struct ui *ui;
     66        /** Link to @c ui->windows */
     67        link_t lwindows;
    5468        /** Callbacks */
    5569        struct ui_window_cb *cb;
     
    6074        /** Window GC */
    6175        gfx_context_t *gc;
     76        /** Window bitmap (if client-side rendering) */
     77        gfx_bitmap_t *bmp;
     78        /** Window memory GC (if client-side rendering) */
     79        mem_gc_t *mgc;
     80        /** Translating GC (if full screen & server-side rendering) */
     81        xlate_gc_t *xgc;
     82        /** Real window GC (if client-side rendering) */
     83        gfx_context_t *realgc;
    6284        /** Window rectangle */
    6385        gfx_rect_t rect;
     86        /** Normal window rectangle (when not maximized) */
     87        gfx_rect_t normal_rect;
     88        /** Display position (if fullscreen mode) */
     89        gfx_coord2_t dpos;
     90        /** Normal display position when not maximized (if fullscreen mode) */
     91        gfx_coord2_t normal_dpos;
    6492        /** Application area bitmap */
    6593        gfx_bitmap_t *app_bmp;
     
    6896        /** Application area GC */
    6997        gfx_context_t *app_gc;
     98        /** Dirty rectangle */
     99        gfx_rect_t dirty_rect;
    70100        /** UI resource. Ideally this would be in ui_t. */
    71101        struct ui_resource *res;
    72102        /** Window decoration */
    73103        struct ui_wdecor *wdecor;
     104        /** System menu */
     105        struct ui_menu *sysmenu;
     106        /** System menu restore entry */
     107        struct ui_menu_entry *sysmenu_restore;
     108        /** System menu minimize entry */
     109        struct ui_menu_entry *sysmenu_minimize;
     110        /** System menu maximize entry */
     111        struct ui_menu_entry *sysmenu_maximize;
     112        /** Menu bar */
     113        struct ui_menu_bar *mbar;
    74114        /** Top-level control in the application area */
    75115        struct ui_control *control;
    76116        /** Current cursor */
    77117        ui_stock_cursor_t cursor;
     118        /** Window placement */
     119        ui_wnd_placement_t placement;
     120        /** Window flags */
     121        ui_wnd_flags_t flags;
    78122};
    79123
     124/** Size change operation */
     125typedef enum {
     126        /** Resize window */
     127        ui_wsc_resize,
     128        /** Maximize window */
     129        ui_wsc_maximize,
     130        /** Unmaximize window */
     131        ui_wsc_unmaximize
     132} ui_wnd_sc_op_t;
     133
     134extern display_stock_cursor_t wnd_dcursor_from_cursor(ui_stock_cursor_t);
     135extern void ui_window_send_sysmenu(ui_window_t *, sysarg_t);
     136extern void ui_window_send_minimize(ui_window_t *);
     137extern void ui_window_send_maximize(ui_window_t *);
     138extern void ui_window_send_unmaximize(ui_window_t *);
    80139extern void ui_window_send_close(ui_window_t *);
    81 extern void ui_window_send_focus(ui_window_t *);
     140extern void ui_window_send_focus(ui_window_t *, unsigned);
    82141extern void ui_window_send_kbd(ui_window_t *, kbd_event_t *);
    83142extern errno_t ui_window_send_paint(ui_window_t *);
    84143extern void ui_window_send_pos(ui_window_t *, pos_event_t *);
    85 extern void ui_window_send_unfocus(ui_window_t *);
     144extern void ui_window_send_unfocus(ui_window_t *, unsigned);
     145extern void ui_window_send_resize(ui_window_t *);
     146extern errno_t ui_window_size_change(ui_window_t *, gfx_rect_t *,
     147    ui_wnd_sc_op_t);
     148extern void ui_window_update_placement(ui_window_t *);
     149extern ui_window_t *ui_window_get_active(ui_t *);
     150extern ui_window_t *ui_window_first(ui_t *);
     151extern ui_window_t *ui_window_next(ui_window_t *);
    86152
    87153#endif
Note: See TracChangeset for help on using the changeset viewer.