[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