]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Add getdefwinpos, getdefwinsize;
authorGuido van Rossum <guido@python.org>
Wed, 13 Feb 1991 23:19:39 +0000 (23:19 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 13 Feb 1991 23:19:39 +0000 (23:19 +0000)
and improve mouse clipping for textedit blocks.

Modules/stdwinmodule.c

index 5403fb7ec22ca2a962345da217ce339ff35e5a38..4d28f9735824ca40e53f4e687f323a90ea475c36 100644 (file)
@@ -584,11 +584,17 @@ text_event(self, args)
        if (!geteventarg(args, &e))
                return NULL;
        if (e.type == WE_MOUSE_DOWN) {
-               /* Cheat at the left margin */
+               /* Cheat at the margins */
+               int width, height;
+               wgetdocsize(e.window, &width, &height);
                if (e.u.where.h < 0 && tegetleft(tp) == 0)
                        e.u.where.h = 0;
-               /* XXX should also check right margin and bottom,
-                  but we have no wgetdocsize() yet */
+               else if (e.u.where.h > width && tegetright(tp) == width)
+                       e.u.where.h = width;
+               if (e.u.where.v < 0 && tegettop(tp) == 0)
+                       e.u.where.v = 0;
+               else if (e.u.where.v > height && tegetright(tp) == height)
+                       e.u.where.v = height;
        }
        return newintobject((long) teevent(tp, &e));
 }
@@ -1432,6 +1438,30 @@ stdwin_setdefwinsize(sw, args)
        return None;
 }
 
+static object *
+stdwin_getdefwinpos(wp, args)
+       windowobject *wp;
+       object *args;
+{
+       int h, v;
+       if (!getnoarg(args))
+               return NULL;
+       wgetdefwinpos(&h, &v);
+       return makepoint(h, v);
+}
+
+static object *
+stdwin_getdefwinsize(wp, args)
+       windowobject *wp;
+       object *args;
+{
+       int width, height;
+       if (!getnoarg(args))
+               return NULL;
+       wgetdefwinsize(&width, &height);
+       return makepoint(width, height);
+}
+
 static object *
 stdwin_menucreate(self, args)
        object *self;
@@ -1609,6 +1639,8 @@ static struct methodlist stdwin_methods[] = {
        {"fleep",               stdwin_fleep},
        {"getselection",        stdwin_getselection},
        {"getcutbuffer",        stdwin_getcutbuffer},
+       {"getdefwinpos",        stdwin_getdefwinpos},
+       {"getdefwinsize",       stdwin_getdefwinsize},
        {"getevent",            stdwin_getevent},
        {"menucreate",          stdwin_menucreate},
        {"message",             stdwin_message},