Changeset fa01c05 in mainline for uspace/lib/ui/src/window.c


Ignore:
Timestamp:
2020-11-03T18:46:35Z (5 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b71c0fc
Parents:
4ac11ff
Message:

UI window should fill the application are background

Except for applications that want to do their own drawing without the
use of UI control hierarchy. We solve this by doing it in a default
paint callback that the application can override with its own
paint routine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/src/window.c

    r4ac11ff rfa01c05  
    3737#include <errno.h>
    3838#include <gfx/context.h>
     39#include <gfx/render.h>
    3940#include <io/kbd_event.h>
    4041#include <io/pos_event.h>
     
    4546#include <ui/window.h>
    4647#include "../private/dummygc.h"
     48#include "../private/resource.h"
    4749#include "../private/ui.h"
    4850#include "../private/wdecor.h"
     
    205207}
    206208
     209errno_t ui_window_paint(ui_window_t *window)
     210{
     211        return ui_window_send_paint(window);
     212}
     213
    207214/** Handle window close event. */
    208215static void dwnd_close_event(void *arg)
     
    210217        ui_window_t *window = (ui_window_t *) arg;
    211218
    212         ui_window_close(window);
     219        ui_window_send_close(window);
    213220}
    214221
     
    223230        }
    224231
    225         ui_window_focus(window);
     232        ui_window_send_focus(window);
    226233}
    227234
     
    232239
    233240        (void) window;
    234         ui_window_kbd(window, kbd_event);
     241        ui_window_send_kbd(window, kbd_event);
    235242}
    236243
     
    245252
    246253        ui_wdecor_pos_event(window->wdecor, event);
    247         ui_window_pos(window, event);
     254        ui_window_send_pos(window, event);
    248255}
    249256
     
    258265        }
    259266
    260         ui_window_unfocus(window);
     267        ui_window_send_unfocus(window);
    261268}
    262269
     
    270277        ui_window_t *window = (ui_window_t *) arg;
    271278
    272         ui_window_close(window);
     279        ui_window_send_close(window);
    273280}
    274281
     
    290297 * @param window Window
    291298 */
    292 void ui_window_close(ui_window_t *window)
     299void ui_window_send_close(ui_window_t *window)
    293300{
    294301        if (window->cb != NULL && window->cb->close != NULL)
     
    300307 * @param window Window
    301308 */
    302 void ui_window_focus(ui_window_t *window)
     309void ui_window_send_focus(ui_window_t *window)
    303310{
    304311        if (window->cb != NULL && window->cb->focus != NULL)
     
    310317 * @param window Window
    311318 */
    312 void ui_window_kbd(ui_window_t *window, kbd_event_t *kbd)
     319void ui_window_send_kbd(ui_window_t *window, kbd_event_t *kbd)
    313320{
    314321        if (window->cb != NULL && window->cb->kbd != NULL)
     
    316323}
    317324
     325/** Send window paint event.
     326 *
     327 * @param window Window
     328 */
     329errno_t ui_window_send_paint(ui_window_t *window)
     330{
     331        if (window->cb != NULL && window->cb->paint != NULL)
     332                return window->cb->paint(window, window->arg);
     333        else
     334                return ui_window_def_paint(window);
     335}
     336
    318337/** Send window position event.
    319338 *
    320339 * @param window Window
    321340 */
    322 void ui_window_pos(ui_window_t *window, pos_event_t *pos)
     341void ui_window_send_pos(ui_window_t *window, pos_event_t *pos)
    323342{
    324343        if (window->cb != NULL && window->cb->pos != NULL)
     
    330349 * @param window Window
    331350 */
    332 void ui_window_unfocus(ui_window_t *window)
     351void ui_window_send_unfocus(ui_window_t *window)
    333352{
    334353        if (window->cb != NULL && window->cb->unfocus != NULL)
     
    336355}
    337356
     357/** Default window paint routine.
     358 *
     359 * @param window Window
     360 * @return EOK on success or an error code
     361 */
     362errno_t ui_window_def_paint(ui_window_t *window)
     363{
     364        gfx_rect_t app_rect;
     365        errno_t rc;
     366
     367        rc = gfx_set_color(window->gc, window->res->wnd_face_color);
     368        if (rc != EOK)
     369                return rc;
     370
     371        ui_window_get_app_rect(window, &app_rect);
     372
     373        rc = gfx_fill_rect(window->gc, &app_rect);
     374        if (rc != EOK)
     375                return rc;
     376
     377        return EOK;
     378}
     379
    338380/** @}
    339381 */
Note: See TracChangeset for help on using the changeset viewer.