Changeset aefdccd in mainline for uspace/lib/ui/src/list.c


Ignore:
Timestamp:
2025-10-20T06:14:54Z (4 months ago)
Author:
GitHub <noreply@…>
Parents:
adbd7e1 (diff), 3e41cc4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
git-author:
boba-buba <120932204+boba-buba@…> (2025-10-20 06:14:54)
git-committer:
GitHub <noreply@…> (2025-10-20 06:14:54)
Message:

Merge branch 'HelenOS:master' into ticket/packet-capture

File:
1 edited

Legend:

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

    radbd7e1 raefdccd  
    11/*
    2  * Copyright (c) 2024 Jiri Svoboda
     2 * Copyright (c) 2025 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    16521652}
    16531653
     1654/** Save list position for later.
     1655 *
     1656 * The position will be valid even if the list is cleaned and re-populated
     1657 * (it just counts position from the top.)
     1658 *
     1659 * @param list UI list
     1660 * @param pos Place to store position
     1661 */
     1662void ui_list_save_pos(ui_list_t *list, ui_list_pos_t *pos)
     1663{
     1664        pos->page_idx = list->page_idx;
     1665        pos->cursor_idx = list->cursor_idx;
     1666}
     1667
     1668/** Restore saved list position.
     1669 *
     1670 * The position will be valid even if the list is cleaned and re-populated
     1671 * (it just counts position from the top.)
     1672 *
     1673 * @param list UI list
     1674 * @param pos Saved list position
     1675 */
     1676void ui_list_restore_pos(ui_list_t *list, ui_list_pos_t *pos)
     1677{
     1678        size_t idx, i;
     1679        ui_list_entry_t *entry, *next;
     1680
     1681        idx = 0;
     1682        entry = ui_list_first(list);
     1683
     1684        for (i = 0; i < pos->cursor_idx; i++) {
     1685                next = ui_list_next(entry);
     1686                if (next != NULL) {
     1687                        entry = next;
     1688                        ++idx;
     1689                }
     1690        }
     1691
     1692        list->cursor = entry;
     1693        list->cursor_idx = idx;
     1694
     1695        idx = 0;
     1696        entry = ui_list_first(list);
     1697
     1698        for (i = 0; i < pos->page_idx; i++) {
     1699                next = ui_list_next(entry);
     1700                if (next != NULL) {
     1701                        entry = next;
     1702                        ++idx;
     1703                }
     1704        }
     1705
     1706        list->page = entry;
     1707        list->page_idx = idx;
     1708}
     1709
    16541710/** @}
    16551711 */
Note: See TracChangeset for help on using the changeset viewer.