rendered paste bodyIndex: src/group/group.h
===================================================================
--- src/group/group.h (Revision 3540)
+++ src/group/group.h (Arbeitskopie)
@@ -400,10 +400,7 @@
int oldTopTabCenterX;
int oldTopTabCenterY;
- struct {
- Window id;
- Bool mapped;
- } inputPrevention;
+ Window inputPrevention;
GLushort color[4];
};
Index: src/group/init.c
===================================================================
--- src/group/init.c (Revision 3540)
+++ src/group/init.c (Arbeitskopie)
@@ -95,8 +95,8 @@
groupDestroyCairoLayer(d->screens, group->tabBar->bgLayer);
groupDestroyCairoLayer(d->screens, group->tabBar->selectionLayer);
- if (group->inputPrevention.id)
- XDestroyWindow(d->display, group->inputPrevention.id);
+ if (group->inputPrevention)
+ XDestroyWindow(d->display, group->inputPrevention);
if (group->tabBar->region)
XDestroyRegion(group->tabBar->region);
Index: src/group/tab.c
===================================================================
--- src/group/tab.c (Revision 3540)
+++ src/group/tab.c (Arbeitskopie)
@@ -2052,16 +2052,15 @@
void
groupSwitchTopTabInput(CompScreen *s, GroupSelection *group, Bool enable)
{
- if(!group->tabBar || !group->inputPrevention.id)
+ if(!group->tabBar || !HAS_TOP_WIN(group) || !group->inputPrevention)
return;
- if (!enable && !group->inputPrevention.mapped) {
- XMapWindow(s->display->display, group->inputPrevention.id);
- group->inputPrevention.mapped = TRUE;
- } else if (enable && group->inputPrevention.mapped) {
- XUnmapWindow(s->display->display, group->inputPrevention.id);
- group->inputPrevention.mapped = FALSE;
- }
+ CompWindow *w = TOP_TAB(group);
+
+ if (!enable)
+ XMapRaised(s->display->display, group->inputPrevention);
+ else
+ XUnmapWindow(s->display->display, group->inputPrevention);
}
/*
@@ -2073,21 +2072,23 @@
{
XWindowChanges xwc;
- if(!group->tabBar || !HAS_TOP_WIN(group) || !group->inputPrevention.id)
+ if(!group->tabBar || !HAS_TOP_WIN(group) || !group->inputPrevention)
return;
- xwc.stack_mode = Above;
- xwc.sibling = TOP_TAB(group)->id;
+ CompWindow *w = TOP_TAB(group);
- xwc.x = group->tabBar->leftSpringX;
- xwc.y = group->tabBar->region->extents.y1;
+ xwc.x = group->tabBar->leftSpringX - WIN_X(w);
+ xwc.y = group->tabBar->region->extents.y1 - WIN_Y(w);
xwc.width = group->tabBar->rightSpringX - group->tabBar->leftSpringX;
xwc.height = group->tabBar->region->extents.y2 - group->tabBar->region->extents.y1;
- XConfigureWindow(s->display->display,
- group->inputPrevention.id,
- CWSibling | CWStackMode | CWX | CWY | CWWidth | CWHeight,
- &xwc);
+ XReparentWindow(s->display->display, group->inputPrevention,
+ w->id, xwc.x, xwc.y);
+
+ XConfigureWindow(s->display->display, group->inputPrevention,
+ CWX | CWY | CWWidth | CWHeight, &xwc);
+
+ XRaiseWindow(s->display->display, group->inputPrevention);
}
/*
@@ -2096,13 +2097,13 @@
*/
void groupCreateInputPreventionWindow(CompScreen *s, GroupSelection* group)
{
- if (!group->inputPrevention.id) //For preventing a memory leak.
+ if (!group->inputPrevention) //For preventing a memory leak.
{
XSetWindowAttributes attrib;
attrib.override_redirect = TRUE;
attrib.event_mask = ButtonPressMask;
- group->inputPrevention.id = XCreateWindow(s->display->display, s->root,
+ group->inputPrevention = XCreateWindow(s->display->display, s->root,
-100, -100, 1, 1, 0, CopyFromParent,
InputOnly, CopyFromParent,
CWOverrideRedirect | CWEventMask, &attrib);
@@ -2115,11 +2116,11 @@
*/
void groupDestroyInputPreventionWindow(CompScreen *s, GroupSelection* group)
{
- if(group->inputPrevention.id)
+ if(group->inputPrevention)
{
- XDestroyWindow(s->display->display, group->inputPrevention.id);
+ XDestroyWindow(s->display->display, group->inputPrevention);
- group->inputPrevention.id = 0;
+ group->inputPrevention = None;
}
if (group->tabBar)
Index: src/group/paint.c
===================================================================
--- src/group/paint.c (Revision 3540)
+++ src/group/paint.c (Arbeitskopie)
@@ -312,14 +312,13 @@
/* FIXME: remove this after finding out how to get move notifies for input only windows */
#if 1
- if (bar->mouseOver && group->inputPrevention.id) {
+ if (bar->mouseOver && group->inputPrevention) {
Bool hasText = FALSE;
Bool animation = FALSE;
int mouseX, mouseY;
groupGetCurrentMousePosition(s->display, &mouseX, &mouseY);
-
if (!(bar->lastHoveredSlot &&
XPointInRegion(bar->lastHoveredSlot->region, mouseX, mouseY)))
{
Index: src/group/group.c
===================================================================
--- src/group/group.c (Revision 3540)
+++ src/group/group.c (Arbeitskopie)
@@ -409,8 +409,7 @@
g->grabWindow = None;
g->grabMask = 0;
- g->inputPrevention.id = None;
- g->inputPrevention.mapped = FALSE;
+ g->inputPrevention = None;
g->oldTopTabCenterX = 0;
g->oldTopTabCenterY = 0;
@@ -645,7 +644,7 @@
GroupSelection *group;
for (group = gd->groups; group; group = group->next) {
- if (group->inputPrevention.id == event->xbutton.window) {
+ if (group->inputPrevention == event->xbutton.window) {
GroupTabBarSlot *slot;
for (slot = group->tabBar->slots; slot; slot = slot->next) {