Add getdefwinpos, getdefwinsize;

and improve mouse clipping for textedit blocks.
This commit is contained in:
Guido van Rossum 1991-02-13 23:19:39 +00:00
parent 253919f3b7
commit 33f1770ed8
1 changed files with 35 additions and 3 deletions

View 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},