Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 0262f16c in mainline for uspace/lib/ui/src/menubar.c


Ignore:
Timestamp:
2021-04-09T22:41:22Z (8 months ago)
Author:
jxsvoboda <5887334+jxsvoboda@…>
Branches:
master
Children:
62223ec
Parents:
214aefb
git-author:
Jiri Svoboda <jiri@…> (2021-04-01 16:23:35)
git-committer:
jxsvoboda <5887334+jxsvoboda@…> (2021-04-09 22:41:22)
Message:

Activate menu entry by clicking (instead of simple press)

This allows for visual feedback and also serves as the confirmation
of correctness/intent (same as with push button).

File:
1 edited

Legend:

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

    r214aefb r0262f16c  
    267267 *
    268268 * @param mbar Menu bar
    269  * @param ppos Press position
     269 * @param pos_event Position event
    270270 * @return @c ui_claimed iff the event is claimed
    271271 */
    272 static ui_evclaim_t ui_menu_bar_press(ui_menu_bar_t *mbar, gfx_coord2_t *ppos)
     272ui_evclaim_t ui_menu_bar_pos_event(ui_menu_bar_t *mbar, pos_event_t *event)
    273273{
    274274        gfx_coord2_t pos;
     
    279279        gfx_coord_t width;
    280280        gfx_coord_t hpad;
     281        gfx_coord2_t ppos;
     282        ui_evclaim_t claimed;
     283
     284        ppos.x = event->hpos;
     285        ppos.y = event->vpos;
    281286
    282287        if (mbar->res->textmode) {
     
    298303
    299304                /* Check if press is inside menu bar entry */
    300                 if (gfx_pix_inside_rect(ppos, &rect)) {
     305                if (event->type == POS_PRESS &&
     306                    gfx_pix_inside_rect(&ppos, &rect)) {
    301307                        ui_menu_bar_select(mbar, &pos, menu);
    302308                        return ui_claimed;
     
    310316                        ui_menu_get_rect(menu, &spos, &rect);
    311317
    312                         /* Check if press is inside open menu */
    313                         if (gfx_pix_inside_rect(ppos, &rect)) {
    314                                 ui_menu_press(menu, &spos, ppos);
     318                        claimed = ui_menu_pos_event(menu, &spos, event);
     319                        if (claimed == ui_claimed)
    315320                                return ui_claimed;
    316                         }
    317321                }
    318322
    319323                pos.x += width;
    320324                menu = ui_menu_next(menu);
    321         }
    322 
    323         return ui_unclaimed;
    324 }
    325 
    326 /** Handle menu bar position event.
    327  *
    328  * @param mbar Menu bar
    329  * @param pos_event Position event
    330  * @return @c ui_claimed iff the event is claimed
    331  */
    332 ui_evclaim_t ui_menu_bar_pos_event(ui_menu_bar_t *mbar, pos_event_t *event)
    333 {
    334         gfx_coord2_t pos;
    335 
    336         pos.x = event->hpos;
    337         pos.y = event->vpos;
    338 
    339         switch (event->type) {
    340         case POS_PRESS:
    341                 return ui_menu_bar_press(mbar, &pos);
    342         default:
    343                 break;
    344325        }
    345326
Note: See TracChangeset for help on using the changeset viewer.