From e56126db89ae52b5dfdd48fc3ab728af7ae8a268 Mon Sep 17 00:00:00 2001
From: Ivica Ico Bukvic <ico@vt.edu>
Date: Sat, 10 Aug 2013 11:07:04 -0400
Subject: [PATCH] improved helplink (accelerated displace, proper selection
 color logic)

---
 externals/pddp/helplink.c | 32 +++++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 7 deletions(-)

diff --git a/externals/pddp/helplink.c b/externals/pddp/helplink.c
index 76353c0e8..59f9882e5 100644
--- a/externals/pddp/helplink.c
+++ b/externals/pddp/helplink.c
@@ -79,6 +79,18 @@ static void helplink_displace(t_gobj *z, t_glist *glist, int dx, int dy)
     }
 }
 
+static void helplink_displace_withtag(t_gobj *z, t_glist *glist, int dx, int dy)
+{
+    t_text *t = (t_text *)z;
+    t->te_xpix += dx;
+    t->te_ypix += dy;
+    /*if (glist_isvisible(glist))
+    {
+        t_rtext *y = glist_findrtext(glist, t);
+        rtext_displace(y, dx, dy);
+    }*/
+}
+
 static void helplink_select(t_gobj *z, t_glist *glist, int state)
 {
     t_helplink *x = (t_helplink *)z;
@@ -86,13 +98,18 @@ static void helplink_select(t_gobj *z, t_glist *glist, int state)
     rtext_select(y, state);
     if (glist_isvisible(glist) && glist->gl_havewindow)
     {
-	if (state)
-	    sys_vgui(".x%lx.c itemconfigure %s -fill blue\n",
-		     glist, rtext_gettag(y));
-	else
-	    sys_vgui(".x%lx.c itemconfigure %s -text {%s} -fill #0000dd -activefill #e70000\n",
-		     glist, rtext_gettag(y), x->x_vistext);
-    }
+		if (state) {
+			sys_vgui(".x%lx.c itemconfigure %s -fill $select_color\n",
+				glist, rtext_gettag(y));
+			sys_vgui(".x%lx.c addtag selected withtag %s\n",
+				glist, rtext_gettag(y));
+		} else {
+			sys_vgui(".x%lx.c itemconfigure %s -text {%s} -fill #0000dd -activefill #e70000\n",
+				 glist, rtext_gettag(y), x->x_vistext);
+			sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", (t_int)glist_getcanvas(glist));
+			sys_vgui(".x%lx.c dtag %s selected\n", glist, rtext_gettag(y));
+		}
+	}
 }
 
 static void helplink_activate(t_gobj *z, t_glist *glist, int state)
@@ -197,6 +214,7 @@ static t_widgetbehavior helplink_widgetbehavior =
     0,
     helplink_vis,
     helplink_click,
+	helplink_displace_withtag,
 };
 
 void helplink_setup(void)
-- 
GitLab