summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2024-09-14 09:19:51 (GMT)
committerfvogel <fvogelnew1@free.fr>2024-09-14 09:19:51 (GMT)
commitb60395db30180c63461d7aad44364e79a9aa54a6 (patch)
tree3a321fc67d15d5ab1c1f5c260c672cc753451b50 /generic
parenta850e99ee0b543eda99379868bf747b8f1614762 (diff)
downloadtk-b60395db30180c63461d7aad44364e79a9aa54a6.zip
tk-b60395db30180c63461d7aad44364e79a9aa54a6.tar.gz
tk-b60395db30180c63461d7aad44364e79a9aa54a6.tar.bz2
Factorize code.
Diffstat (limited to 'generic')
-rw-r--r--generic/ttk/ttkTreeview.c27
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: