diff --git a/src/g_all_guis.h b/src/g_all_guis.h
index f35210901cfed8a59e0f556e6120455d3421fb59..6899cad2962fadd263e4c98d15b7ee93ba38ec64 100644
--- a/src/g_all_guis.h
+++ b/src/g_all_guis.h
@@ -121,8 +121,8 @@
 #define SCALE_VU_MINWIDTH 8
 #define SCALE_VU_MINHEIGHT 80
 
-#define SCALEHANDLE_WIDTH   10    /* item size is int */
-#define SCALEHANDLE_HEIGHT  10
+#define SCALEHANDLE_WIDTH   5
+#define SCALEHANDLE_HEIGHT  5
 
 typedef struct _iem_fstyle_flags
 {
diff --git a/src/g_editor.c b/src/g_editor.c
index 89ecac015868ab69a07a678f37e1e0ccbbc3c10d..7c12ba5d52948ba358613b30adb77af1defbd42e 100644
--- a/src/g_editor.c
+++ b/src/g_editor.c
@@ -1520,6 +1520,7 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which,
     {
 		if (x->gl_editor->e_onmotion == MA_MOVE) {		
 			//fprintf(stderr,"letting go of objects\n");
+        	sys_vgui(".x%lx.c raise all_cords\n", x);
 			sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x);
 		}
         x->gl_editor->e_grab = 0;
diff --git a/src/g_rtext.c b/src/g_rtext.c
index 0e11706f8d2adaf2cde185ce43102c2d1c99a4fa..0cbe219a079135c977c4bef805d672ea518b7b24 100644
--- a/src/g_rtext.c
+++ b/src/g_rtext.c
@@ -452,13 +452,19 @@ void rtext_key(t_rtext *x, int keynum, t_symbol *keysym)
             {
                 ....
             } */
-            if (x->x_selstart && (x->x_selstart == x->x_selend))
+            if (x->x_selstart && (x->x_selstart == x->x_selend)) {
                 x->x_selstart--;
+				if (glist_isvisible(glist_getcanvas(x->x_glist)))
+					sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", (t_int)glist_getcanvas(x->x_glist));
+			}
+			
         }
         else if (n == 127)      /* delete */
         {
             if (x->x_selend < x->x_bufsize && (x->x_selstart == x->x_selend))
                 x->x_selend++;
+			if (glist_isvisible(glist_getcanvas(x->x_glist)))
+				sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", (t_int)glist_getcanvas(x->x_glist));
         }
         
         ndel = x->x_selend - x->x_selstart;
@@ -480,6 +486,8 @@ be printable in whatever 8-bit character set we find ourselves. */
             x->x_buf[x->x_selstart] = n;
             x->x_bufsize = newsize;
             x->x_selstart = x->x_selstart + 1;
+			if (glist_isvisible(glist_getcanvas(x->x_glist)))
+				sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", (t_int)glist_getcanvas(x->x_glist));
         }
         x->x_selend = x->x_selstart;
         x->x_glist->gl_editor->e_textdirty = 1;
diff --git a/src/g_text.c b/src/g_text.c
index 777303ce164b801dc8aeff1aad25f72c97e05c59..126906a5b9db6b8f929b832688f617ec0c434858 100644
--- a/src/g_text.c
+++ b/src/g_text.c
@@ -133,6 +133,8 @@ static void canvas_objtext(t_glist *gl, int xpix, int ypix, int selected,
     if (pd_class(&x->ob_pd) == voutlet_class)
         canvas_resortoutlets(glist_getcanvas(gl));
     canvas_unsetcurrent((t_canvas *)gl);
+	if ( glist_isvisible( ((t_canvas *)gl) ) )
+		sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", (t_int)gl);
 }
 
 extern int sys_noautopatch;
@@ -1049,6 +1051,25 @@ static void text_getrect(t_gobj *z, t_glist *glist,
     {
         t_rtext *y = glist_findrtext(glist, x);
         width = rtext_width(y);
+
+		/*  now find if we have more inlets or outlets than
+			what can comfortably fit and adjust accordingly
+			but only do so if this is not gop object
+		*/
+
+		//fprintf(stderr,"isgraph %d\n", ((t_glist *)z)->gl_isgraph);
+		if (!((t_glist *)z)->gl_isgraph) {
+
+			t_object *ob = pd_checkobject(&x->te_pd);
+			int no = obj_noutlets(ob);
+			int ni = obj_ninlets(ob);
+
+			int m = ( ni > no ? ni : no);
+			if ( width < IOWIDTH * 2 * m ) {
+				/*	we have to resize the object */
+				width = IOWIDTH * 2 * m;
+			}
+		}
         height = rtext_height(y) - (iscomment << 1);
     }
     else width = height = 10;
diff --git a/src/m_pd.h b/src/m_pd.h
index 85d446a53d1518aa72c23d840745b5f738711420..845680ba3bba8e8365bf9b2706d1208d7f72d062 100644
--- a/src/m_pd.h
+++ b/src/m_pd.h
@@ -11,7 +11,7 @@ extern "C" {
 #define PD_MAJOR_VERSION 0
 #define PD_MINOR_VERSION 42
 #define PD_BUGFIX_VERSION 5
-#define PD_TEST_VERSION "extended-l2ork-20101217"
+#define PD_TEST_VERSION "extended-l2ork-20101222"
 
 /* old name for "MSW" flag -- we have to take it for the sake of many old
 "nmakefiles" for externs, which will define NT and not MSW */
diff --git a/src/x_glist b/src/x_glist
new file mode 100644
index 0000000000000000000000000000000000000000..0f235d3db191d61f35321e331632c5ece54c8413
--- /dev/null
+++ b/src/x_glist
@@ -0,0 +1,2 @@
+g_text.c:		t_canvas *c = glist_getcanvas(y->x_glist);
+g_text.c~:		t_canvas *c = glist_getcanvas(y->x_glist);