Changeset 3fd38b2 in mainline


Ignore:
Timestamp:
2022-09-29T07:45:07Z (22 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c77cfd8
Parents:
50a16d9
git-author:
Jiri Svoboda <jiri@…> (2022-09-28 07:44:28)
git-committer:
Jiri Svoboda <jiri@…> (2022-09-29 07:45:07)
Message:

Size taskbar based on display size, fix text mode

Location:
uspace
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/taskbar/clock.c

    r50a16d9 r3fd38b2  
    4444#include <ui/paint.h>
    4545#include <ui/resource.h>
     46#include <ui/ui.h>
    4647#include "clock.h"
    4748
     
    135136        gfx_context_t *gc = ui_window_get_gc(clock->window);
    136137        ui_resource_t *res = ui_window_get_res(clock->window);
     138        ui_t *ui = ui_window_get_ui(clock->window);
    137139        char buf[10];
    138140        gfx_text_fmt_t fmt;
     
    141143        errno_t rc;
    142144
     145        if (!ui_is_textmode(ui)) {
     146                /* Paint frame */
     147                rc = ui_paint_inset_frame(res, &clock->rect, &irect);
     148                if (rc != EOK)
     149                        goto error;
     150        } else {
     151                irect = clock->rect;
     152        }
     153
     154        rc = gfx_set_color(gc, ui_resource_get_wnd_face_color(res));
     155        if (rc != EOK)
     156                goto error;
     157
    143158        /* Fill background */
    144 
    145         rc = ui_paint_inset_frame(res, &clock->rect, &irect);
    146         if (rc != EOK)
    147                 goto error;
    148 
    149         rc = gfx_set_color(gc, ui_resource_get_wnd_face_color(res));
    150         if (rc != EOK)
    151                 goto error;
    152 
    153159        rc = gfx_fill_rect(gc, &irect);
    154160        if (rc != EOK)
  • uspace/app/taskbar/taskbar.c

    r50a16d9 r3fd38b2  
    7373        ui_wnd_params_t params;
    7474        taskbar_t *taskbar = NULL;
     75        gfx_rect_t scr_rect;
    7576        gfx_rect_t rect;
    7677        ui_resource_t *ui_res;
     
    8687        if (rc != EOK) {
    8788                printf("Error creating UI on display %s.\n", display_spec);
     89                goto error;
     90        }
     91
     92        rc = ui_get_rect(taskbar->ui, &scr_rect);
     93        if (rc != EOK) {
     94                printf("Error getting screen dimensions.\n");
    8895                goto error;
    8996        }
     
    94101        params.style &= ~ui_wds_titlebar;
    95102
     103        params.rect.p0.x = 0;
     104        params.rect.p0.y = 0;
     105        params.rect.p1.x = scr_rect.p1.x - scr_rect.p0.x;
     106
    96107        if (ui_is_textmode(taskbar->ui)) {
    97                 params.rect.p0.x = 0;
    98                 params.rect.p0.y = 0;
    99                 params.rect.p1.x = 80;
    100108                params.rect.p1.y = 1;
    101109                params.style &= ~ui_wds_frame;
    102110        } else {
    103                 params.rect.p0.x = 0;
    104                 params.rect.p0.y = 0;
    105                 params.rect.p1.x = 1024;
    106111                params.rect.p1.y = 32;
    107112        }
     
    144149                goto error;
    145150
    146         rect.p0.x = 1024 - 80;
    147         rect.p0.y = 4;
    148         rect.p1.x = 1024 - 4;
    149         rect.p1.y = 32 - 4;
     151        if (ui_is_textmode(taskbar->ui)) {
     152                rect.p0.x = params.rect.p1.x - 10;
     153                rect.p0.y = 0;
     154                rect.p1.x = params.rect.p1.x;
     155                rect.p1.y = 1;
     156        } else {
     157                rect.p0.x = params.rect.p1.x - 80;
     158                rect.p0.y = 4;
     159                rect.p1.x = params.rect.p1.x - 4;
     160                rect.p1.y = 32 - 4;
     161        }
     162
    150163        taskbar_clock_set_rect(taskbar->clock, &rect);
    151164
  • uspace/lib/ui/include/ui/ui.h

    r50a16d9 r3fd38b2  
    3939#include <display.h>
    4040#include <errno.h>
     41#include <gfx/coord.h>
    4142#include <io/console.h>
    4243#include <stdbool.h>
     
    5354extern bool ui_is_textmode(ui_t *);
    5455extern bool ui_is_fullscreen(ui_t *);
     56extern errno_t ui_get_rect(ui_t *, gfx_rect_t *);
    5557extern errno_t ui_suspend(ui_t *);
    5658extern errno_t ui_resume(ui_t *);
  • uspace/lib/ui/src/ui.c

    r50a16d9 r3fd38b2  
    524524}
    525525
     526/** Get UI screen rectangle.
     527 *
     528 * @param ui User interface
     529 * @param rect Place to store bounding rectangle
     530 */
     531errno_t ui_get_rect(ui_t *ui, gfx_rect_t *rect)
     532{
     533        display_info_t info;
     534        sysarg_t cols, rows;
     535        errno_t rc;
     536
     537        if (ui->display != NULL) {
     538                rc = display_get_info(ui->display, &info);
     539                if (rc != EOK)
     540                        return rc;
     541
     542                *rect = info.rect;
     543        } else if (ui->console != NULL) {
     544                rc = console_get_size(ui->console, &cols, &rows);
     545                if (rc != EOK)
     546                        return rc;
     547
     548                rect->p0.x = 0;
     549                rect->p0.y = 0;
     550                rect->p1.x = cols;
     551                rect->p1.y = rows;
     552        } else {
     553                return ENOTSUP;
     554        }
     555
     556        return EOK;
     557}
     558
    526559/** Get clickmatic from UI.
    527560 *
  • uspace/lib/ui/test/ui.c

    r50a16d9 r3fd38b2  
    169169}
    170170
     171/** ui_is_get_rect() */
     172PCUT_TEST(get_rect)
     173{
     174        ui_t *ui = NULL;
     175        gfx_rect_t rect;
     176        errno_t rc;
     177
     178        rc = ui_create_disp(NULL, &ui);
     179        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     180        PCUT_ASSERT_NOT_NULL(ui);
     181
     182        /* This won't work without a display service */
     183        rc = ui_get_rect(ui, &rect);
     184        PCUT_ASSERT_ERRNO_VAL(ENOTSUP, rc);
     185
     186        ui_destroy(ui);
     187}
     188
    171189/** ui_lock(), ui_unlock() */
    172190PCUT_TEST(lock_unlock)
Note: See TracChangeset for help on using the changeset viewer.