Changeset e63e74a in mainline for uspace/app/taskbar/tbsmenu.c


Ignore:
Timestamp:
2024-02-21T20:26:35Z (3 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
95e2967
Parents:
5f3188b8
Message:

Start menu separator entry support

File:
1 edited

Legend:

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

    r5f3188b8 re63e74a  
    129129        tbarcfg_t *tbcfg = NULL;
    130130        smenu_entry_t *sme;
     131        bool separator;
    131132        const char *caption;
    132133        const char *cmd;
     
    140141        sme = tbarcfg_smenu_first(tbcfg);
    141142        while (sme != NULL) {
    142                 caption = smenu_entry_get_caption(sme);
    143                 cmd = smenu_entry_get_cmd(sme);
    144                 terminal = smenu_entry_get_terminal(sme);
    145 
    146                 rc = tbsmenu_add(tbsmenu, caption, cmd, terminal, &tentry);
    147                 if (rc != EOK)
    148                         goto error;
     143                separator = smenu_entry_get_separator(sme);
     144                if (separator == false) {
     145                        caption = smenu_entry_get_caption(sme);
     146                        cmd = smenu_entry_get_cmd(sme);
     147                        terminal = smenu_entry_get_terminal(sme);
     148
     149                        rc = tbsmenu_add(tbsmenu, caption, cmd, terminal,
     150                            &tentry);
     151                        if (rc != EOK)
     152                                goto error;
     153                } else {
     154                        rc = tbsmenu_add_sep(tbsmenu, &tentry);
     155                        if (rc != EOK)
     156                                goto error;
     157                }
    149158
    150159                (void)tentry;
     
    272281        if (entry->cmd != NULL)
    273282                free(entry->cmd);
     283        free(entry);
     284        return rc;
     285}
     286
     287/** Add separator entry to start menu.
     288 *
     289 * @param tbsmenu Start menu
     290 * @param entry Start menu entry
     291 * @return @c EOK on success or an error code
     292 */
     293errno_t tbsmenu_add_sep(tbsmenu_t *tbsmenu, tbsmenu_entry_t **rentry)
     294{
     295        errno_t rc;
     296        tbsmenu_entry_t *entry;
     297
     298        entry = calloc(1, sizeof(tbsmenu_entry_t));
     299        if (entry == NULL)
     300                return ENOMEM;
     301
     302        rc = ui_menu_entry_sep_create(tbsmenu->smenu, &entry->mentry);
     303        if (rc != EOK)
     304                goto error;
     305
     306        ui_menu_entry_set_cb(entry->mentry, tbsmenu_smenu_entry_cb,
     307            (void *)entry);
     308
     309        entry->tbsmenu = tbsmenu;
     310        list_append(&entry->lentries, &tbsmenu->entries);
     311        *rentry = entry;
     312        return EOK;
     313error:
    274314        free(entry);
    275315        return rc;
Note: See TracChangeset for help on using the changeset viewer.