diff options
author | fvogel <fvogelnew1@free.fr> | 2024-09-14 09:19:51 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2024-09-14 09:19:51 (GMT) |
commit | b60395db30180c63461d7aad44364e79a9aa54a6 (patch) | |
tree | 3a321fc67d15d5ab1c1f5c260c672cc753451b50 /generic | |
parent | a850e99ee0b543eda99379868bf747b8f1614762 (diff) | |
download | tk-b60395db30180c63461d7aad44364e79a9aa54a6.zip tk-b60395db30180c63461d7aad44364e79a9aa54a6.tar.gz tk-b60395db30180c63461d7aad44364e79a9aa54a6.tar.bz2 |
Factorize code.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/ttk/ttkTreeview.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/generic/ttk/ttkTreeview.c b/generic/ttk/ttkTreeview.c index 356c27b..56fb194 100644 --- a/generic/ttk/ttkTreeview.c +++ b/generic/ttk/ttkTreeview.c @@ -1748,6 +1748,19 @@ static int IsDetached(Treeview* tv, TreeItem* item) item->parent == NULL && item != tv->tree.root; } +/* Is an item or one of its ancestors detached? */ +static int IsItemOrAncestorDetached(Treeview* tv, TreeItem* item) +{ + TreeItem *parent; + + for (parent = item; parent; parent = parent->parent) { + if (IsDetached(tv, parent)) { + return 1; + } + } + return 0; +} + /* + BoundingBox -- * Compute the parcel of the specified column of the specified item, * (or the entire item if column is NULL) @@ -1761,7 +1774,6 @@ static int BoundingBox( { int dispRow; Ttk_Box bbox = tv->tree.treeArea; - TreeItem *parent; /* Make sure the scroll information is current before use */ TtkUpdateScrollInfo(tv->tree.xscrollHandle); @@ -1775,11 +1787,8 @@ static int BoundingBox( /* not viewable, or off-screen */ return 0; } - for (parent = item; parent; parent = parent->parent) { - if (IsDetached(tv, parent)) { - /* detached, or ancestor detached */ - return 0; - } + if (IsItemOrAncestorDetached(tv, item)) { + return 0; } bbox.y += dispRow * tv->tree.rowHeight; @@ -3576,10 +3585,8 @@ static int TreeviewSeeCommand( /* The item cannot be moved into view if any ancestor (or itself) is detached. */ - for (parent = item; parent; parent = parent->parent) { - if (IsDetached(tv, parent)) { - return TCL_OK; - } + if (IsItemOrAncestorDetached(tv, item)) { + return TCL_OK; } /* Make sure all ancestors are open: |