Ignore:
File:
1 edited

Legend:

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

    r25f26600 rcde067e  
    11/*
    2  * Copyright (c) 2020 Jiri Svoboda
     2 * Copyright (c) 2024 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>
    4652
    4753/** Actual structure of window.
     
    5258        /** Containing user interface */
    5359        struct ui *ui;
     60        /** Link to @c ui->windows */
     61        link_t lwindows;
    5462        /** Callbacks */
    5563        struct ui_window_cb *cb;
     
    6068        /** Window GC */
    6169        gfx_context_t *gc;
     70        /** Window bitmap (if client-side rendering) */
     71        gfx_bitmap_t *bmp;
     72        /** Window memory GC (if client-side rendering) */
     73        mem_gc_t *mgc;
     74        /** Translating GC (if full screen & server-side rendering) */
     75        xlate_gc_t *xgc;
     76        /** Real window GC (if client-side rendering) */
     77        gfx_context_t *realgc;
    6278        /** Window rectangle */
    6379        gfx_rect_t rect;
     80        /** Normal window rectangle (when not maximized) */
     81        gfx_rect_t normal_rect;
     82        /** Display position (if fullscreen mode) */
     83        gfx_coord2_t dpos;
    6484        /** Application area bitmap */
    6585        gfx_bitmap_t *app_bmp;
     
    6888        /** Application area GC */
    6989        gfx_context_t *app_gc;
     90        /** Dirty rectangle */
     91        gfx_rect_t dirty_rect;
    7092        /** UI resource. Ideally this would be in ui_t. */
    7193        struct ui_resource *res;
    7294        /** Window decoration */
    7395        struct ui_wdecor *wdecor;
     96        /** System menu */
     97        struct ui_menu *sysmenu;
     98        /** System menu restore entry */
     99        struct ui_menu_entry *sysmenu_restore;
     100        /** System menu minimize entry */
     101        struct ui_menu_entry *sysmenu_minimize;
     102        /** System menu maximize entry */
     103        struct ui_menu_entry *sysmenu_maximize;
     104        /** Menu bar */
     105        struct ui_menu_bar *mbar;
    74106        /** Top-level control in the application area */
    75107        struct ui_control *control;
    76108        /** Current cursor */
    77109        ui_stock_cursor_t cursor;
     110        /** Window placement */
     111        ui_wnd_placement_t placement;
    78112};
    79113
     114/** Size change operation */
     115typedef enum {
     116        /** Resize window */
     117        ui_wsc_resize,
     118        /** Maximize window */
     119        ui_wsc_maximize,
     120        /** Unmaximize window */
     121        ui_wsc_unmaximize
     122} ui_wnd_sc_op_t;
     123
     124extern display_stock_cursor_t wnd_dcursor_from_cursor(ui_stock_cursor_t);
     125extern void ui_window_send_sysmenu(ui_window_t *, sysarg_t);
     126extern void ui_window_send_minimize(ui_window_t *);
     127extern void ui_window_send_maximize(ui_window_t *);
     128extern void ui_window_send_unmaximize(ui_window_t *);
    80129extern void ui_window_send_close(ui_window_t *);
    81 extern void ui_window_send_focus(ui_window_t *);
     130extern void ui_window_send_focus(ui_window_t *, unsigned);
    82131extern void ui_window_send_kbd(ui_window_t *, kbd_event_t *);
    83132extern errno_t ui_window_send_paint(ui_window_t *);
    84133extern void ui_window_send_pos(ui_window_t *, pos_event_t *);
    85 extern void ui_window_send_unfocus(ui_window_t *);
     134extern void ui_window_send_unfocus(ui_window_t *, unsigned);
     135extern void ui_window_send_resize(ui_window_t *);
     136extern errno_t ui_window_size_change(ui_window_t *, gfx_rect_t *,
     137    ui_wnd_sc_op_t);
    86138
    87139#endif
Note: See TracChangeset for help on using the changeset viewer.