[teklib-general] teklib: Display: changes merged back in from tekUI: changed 'TVi...
Timm S. Mueller
tmueller at neoscientists.org
Sun Sep 7 15:31:03 CEST 2008
details: http://hg.teklib.org/teklib/rev/885d87a0ef26
changeset: 200:885d87a0ef26
user: Timm S. Mueller <tmueller at neoscientists.org>
date: Sun Sep 07 15:29:58 2008 +0200
description:
Display: changes merged back in from tekUI: changed 'TVisual_FullScreen'
attribute name, X11 keyboard grabbing added in FullScreen case, synchronized
changes to window geometry
diffs (truncated from 139 to 100 lines):
diff -r 67d7840ede1c -r 885d87a0ef26 src/display_dfb/display_dfb_api.c
--- a/src/display_dfb/display_dfb_api.c Mon Jul 28 17:37:00 2008 +0000
+++ b/src/display_dfb/display_dfb_api.c Sun Sep 07 15:29:58 2008 +0200
@@ -51,7 +51,7 @@ dfb_openvisual(TMOD_DFB *mod, struct TVR
v->winleft = (mod->dfb_ScrWidth - v->winwidth) / 2;
v->wintop = (mod->dfb_ScrHeight - v->winheight) / 2;
}
- else if (TGetTag(tags, TVisual_Fullscreen, TFALSE))
+ else if (TGetTag(tags, TVisual_FullScreen, TFALSE))
{
v->winwidth = mod->dfb_ScrWidth;
v->winheight = mod->dfb_ScrHeight;
diff -r 67d7840ede1c -r 885d87a0ef26 src/display_x11/display_x11_api.c
--- a/src/display_x11/display_x11_api.c Mon Jul 28 17:37:00 2008 +0000
+++ b/src/display_x11/display_x11_api.c Sun Sep 07 15:29:58 2008 +0200
@@ -30,6 +30,7 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
TUINT gcv_mask;
struct FontNode *fn;
XWindowAttributes rootwa;
+ TBOOL grabkeyboard = TFALSE;
/* gain access to root window properties: */
XGetWindowAttributes(mod->x11_Display,
@@ -68,7 +69,7 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
v->winleft = (WidthOfScreen(rootwa.screen) - v->winwidth) / 2;
v->wintop = (HeightOfScreen(rootwa.screen) - v->winheight) / 2;
}
- else if (TGetTag(tags, TVisual_Fullscreen, TFALSE))
+ else if (TGetTag(tags, TVisual_FullScreen, TFALSE))
{
v->winwidth = WidthOfScreen(rootwa.screen);
v->winheight = HeightOfScreen(rootwa.screen);
@@ -76,6 +77,7 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
v->wintop = 0;
swa_mask |= CWOverrideRedirect;
swa.override_redirect = True;
+ grabkeyboard = TTRUE;
}
else
{
@@ -167,6 +169,12 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
GCForeground | GCBackground, v->gc);
XMapWindow(mod->x11_Display, v->window);
+
+ if (grabkeyboard)
+ {
+ XGrabKeyboard(mod->x11_Display,
+ v->window, True, GrabModeAsync, GrabModeAsync, CurrentTime);
+ }
if (mod->x11_use_xft == TTRUE)
{
@@ -785,6 +793,8 @@ x11_setattrs(TMOD_X11 *mod, struct TVReq
neww = TMAX(neww, v->sizehints->min_width);
newh = TMAX(newh, v->sizehints->min_height);
XResizeWindow(mod->x11_Display, v->window, neww, newh);
+ mod->x11_RequestInProgress = req;
+ v->waitforresize = TTRUE;
}
XSetWMNormalHints(mod->x11_Display, v->window, v->sizehints);
@@ -836,7 +846,7 @@ x11_drawtext(TMOD_X11 *mod, struct TVReq
TINT w = x11_hosttextsize(mod, v->curfont, text);
(*mod->x11_xftiface.XftDrawRect)(v->draw, &bgpen->xftcolor,
- x, y, w, f->height);
+ x, y, w, f->height + 1);
(*mod->x11_xftiface.XftDrawStringUtf8)(v->draw, &fgpen->xftcolor,
f, x, y + f->ascent, (FcChar8 *)text, len);
diff -r 67d7840ede1c -r 885d87a0ef26 src/display_x11/display_x11_inst.c
--- a/src/display_x11/display_x11_inst.c Mon Jul 28 17:37:00 2008 +0000
+++ b/src/display_x11/display_x11_inst.c Sun Sep 07 15:29:58 2008 +0200
@@ -491,6 +491,7 @@ x11_processevent(TMOD_X11 *mod)
{
TExecReplyMsg(mod->x11_ExecBase, mod->x11_RequestInProgress);
mod->x11_RequestInProgress = TNULL;
+ TDBPRINTF(TDB_TRACE,("Released request (ShmEvent)\n"));
}
else
TDBPRINTF(TDB_ERROR,("shm event while no request pending\n"));
@@ -750,6 +751,13 @@ x11_processvisualevent(TMOD_X11 *mod, VI
break;
case ConfigureNotify:
+ if (mod->x11_RequestInProgress && v->waitforresize)
+ {
+ TExecReplyMsg(mod->x11_ExecBase, mod->x11_RequestInProgress);
+ mod->x11_RequestInProgress = TNULL;
+ v->waitforresize = TFALSE;
+ TDBPRINTF(TDB_WARN,("Released request (ConfigureNotify)\n"));
+ }
v->winleft = ev->xconfigure.x;
v->wintop = ev->xconfigure.y;
if ((v->winwidth != ev->xconfigure.width ||
@@ -786,6 +794,7 @@ x11_processvisualevent(TMOD_X11 *mod, VI
TExecReplyMsg(mod->x11_ExecBase, mod->x11_RequestInProgress);
mod->x11_RequestInProgress = TNULL;
v->waitforexpose = TFALSE;
More information about the teklib-general
mailing list