Commit 33f1770e authored by Guido van Rossum's avatar Guido van Rossum

Add getdefwinpos, getdefwinsize;

and improve mouse clipping for textedit blocks.
parent 253919f3
...@@ -584,11 +584,17 @@ text_event(self, args) ...@@ -584,11 +584,17 @@ text_event(self, args)
if (!geteventarg(args, &e)) if (!geteventarg(args, &e))
return NULL; return NULL;
if (e.type == WE_MOUSE_DOWN) { 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) if (e.u.where.h < 0 && tegetleft(tp) == 0)
e.u.where.h = 0; e.u.where.h = 0;
/* XXX should also check right margin and bottom, else if (e.u.where.h > width && tegetright(tp) == width)
but we have no wgetdocsize() yet */ 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)); return newintobject((long) teevent(tp, &e));
} }
...@@ -1432,6 +1438,30 @@ stdwin_setdefwinsize(sw, args) ...@@ -1432,6 +1438,30 @@ stdwin_setdefwinsize(sw, args)
return None; 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 * static object *
stdwin_menucreate(self, args) stdwin_menucreate(self, args)
object *self; object *self;
...@@ -1609,6 +1639,8 @@ static struct methodlist stdwin_methods[] = { ...@@ -1609,6 +1639,8 @@ static struct methodlist stdwin_methods[] = {
{"fleep", stdwin_fleep}, {"fleep", stdwin_fleep},
{"getselection", stdwin_getselection}, {"getselection", stdwin_getselection},
{"getcutbuffer", stdwin_getcutbuffer}, {"getcutbuffer", stdwin_getcutbuffer},
{"getdefwinpos", stdwin_getdefwinpos},
{"getdefwinsize", stdwin_getdefwinsize},
{"getevent", stdwin_getevent}, {"getevent", stdwin_getevent},
{"menucreate", stdwin_menucreate}, {"menucreate", stdwin_menucreate},
{"message", stdwin_message}, {"message", stdwin_message},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment