Changeset ec50d65e in mainline for uspace/lib


Ignore:
Timestamp:
2024-06-22T09:13:30Z (16 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
49aaa0e
Parents:
743f2cdd
git-author:
Jiri Svoboda <jiri@…> (2024-06-22 09:12:48)
git-committer:
Jiri Svoboda <jiri@…> (2024-06-22 09:13:30)
Message:

Editor needs to hide cursor when menu bar is activated

Location:
uspace/lib/ui
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/include/types/ui/menubar.h

    r743f2cdd rec50d65e  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4040typedef struct ui_menu_bar ui_menu_bar_t;
    4141
     42/** Menu bar callbacks */
     43typedef struct ui_menu_bar_cb {
     44        /** Activated */
     45        void (*activate)(ui_menu_bar_t *, void *);
     46        /** Deactivated */
     47        void (*deactivate)(ui_menu_bar_t *, void *);
     48} ui_menu_bar_cb_t;
     49
    4250#endif
    4351
  • uspace/lib/ui/include/ui/menubar.h

    r743f2cdd rec50d65e  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5252    ui_menu_bar_t **);
    5353extern void ui_menu_bar_destroy(ui_menu_bar_t *);
     54extern void ui_menu_bar_set_cb(ui_menu_bar_t *, ui_menu_bar_cb_t *, void *);
    5455extern ui_control_t *ui_menu_bar_ctl(ui_menu_bar_t *);
    5556extern void ui_menu_bar_set_rect(ui_menu_bar_t *, gfx_rect_t *);
  • uspace/lib/ui/private/menubar.h

    r743f2cdd rec50d65e  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    6464        /** List of menu drop-downs (ui_menu_dd_t) */
    6565        list_t menudds;
     66        /** Callbacks */
     67        struct ui_menu_bar_cb *cb;
     68        /** Callback argument */
     69        void *arg;
    6670};
    6771
  • uspace/lib/ui/src/menubar.c

    r743f2cdd rec50d65e  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    6666static ui_evclaim_t ui_menu_bar_ctl_kbd_event(void *, kbd_event_t *);
    6767static ui_evclaim_t ui_menu_bar_ctl_pos_event(void *, pos_event_t *);
     68static void ui_menu_bar_activate_ev(ui_menu_bar_t *);
     69static void ui_menu_bar_deactivate_ev(ui_menu_bar_t *);
    6870
    6971/** Menu bar control ops */
     
    131133        ui_control_delete(mbar->control);
    132134        free(mbar);
     135}
     136
     137/** Set menu bar callbacks.
     138 *
     139 * @param mbar Menu bar
     140 * @param cb Callbacks
     141 * @param arg Callback argument
     142 */
     143void ui_menu_bar_set_cb(ui_menu_bar_t *mbar, ui_menu_bar_cb_t *cb, void *arg)
     144{
     145        mbar->cb = cb;
     146        mbar->arg = arg;
    133147}
    134148
     
    288302                }
    289303
     304                if (!mbar->active)
     305                        ui_menu_bar_activate_ev(mbar);
    290306                mbar->active = true;
    291307        } else {
     308                if (mbar->active)
     309                        ui_menu_bar_deactivate_ev(mbar);
    292310                mbar->active = false;
    293311        }
     
    640658
    641659        (void) ui_menu_bar_paint(mbar);
     660        ui_menu_bar_activate_ev(mbar);
    642661}
    643662
     
    649668{
    650669        ui_menu_bar_select(mbar, NULL, false, 0);
     670        ui_menu_bar_deactivate_ev(mbar);
    651671}
    652672
     
    700720}
    701721
     722/** Send menu bar activate event.
     723 *
     724 * @param mbar Menu bar
     725 */
     726static void ui_menu_bar_activate_ev(ui_menu_bar_t *mbar)
     727{
     728        if (mbar->cb != NULL && mbar->cb->activate != NULL)
     729                mbar->cb->activate(mbar, mbar->arg);
     730}
     731
     732/** Send menu bar deactivate event.
     733 *
     734 * @param mbar Menu bar
     735 */
     736static void ui_menu_bar_deactivate_ev(ui_menu_bar_t *mbar)
     737{
     738        if (mbar->cb != NULL && mbar->cb->deactivate != NULL)
     739                mbar->cb->deactivate(mbar, mbar->arg);
     740}
     741
    702742/** @}
    703743 */
  • uspace/lib/ui/src/window.c

    r743f2cdd rec50d65e  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    318318{
    319319        ui_window_t *window;
     320        ui_window_t *pwindow = NULL;
    320321        display_info_t info;
    321322        gfx_coord2_t scr_dims;
     
    505506        *rwindow = window;
    506507
     508        if (ui_is_fullscreen(ui))
     509                pwindow = ui_window_get_active(ui);
     510
    507511        list_append(&window->lwindows, &ui->windows);
     512
     513        if (ui_is_fullscreen(ui)) {
     514                /* Send unfocus event to previously active window */
     515                if (pwindow != NULL)
     516                        ui_window_send_unfocus(pwindow, 0);
     517        }
     518
    508519        return EOK;
    509520error:
     
    531542{
    532543        ui_t *ui;
     544        ui_window_t *nwindow;
    533545
    534546        if (window == NULL)
     
    558570        if (ui_is_fullscreen(ui)) {
    559571                ui_paint(ui);
     572                /* Send focus event to newly active window */
     573                nwindow = ui_window_get_active(ui);
     574                if (nwindow != NULL)
     575                        ui_window_send_focus(nwindow, 0);
    560576        }
    561577
Note: See TracChangeset for help on using the changeset viewer.