windowing/windowserver/nga/SERVER/ROOTWIN.CPP
changeset 194 18f84489a694
parent 0 5d03bc08d59c
equal deleted inserted replaced
183:6a1564a2f3e6 194:18f84489a694
     1 // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 1995-2010 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
   123 	for(group=(aForceInGroup ? aForceInGroup:Child());group!=NULL;group=group->NextSibling())
   123 	for(group=(aForceInGroup ? aForceInGroup:Child());group!=NULL;group=group->NextSibling())
   124 		{
   124 		{
   125 		CWsClientWindow *win=group->Child();
   125 		CWsClientWindow *win=group->Child();
   126 		while(win!=NULL)
   126 		while(win!=NULL)
   127 			{
   127 			{
   128 			const TRegion *baseArea=win->BaseArea();
   128 
   129 			if (win->IsVisible() && baseArea->Contains(aInPos))
   129 			if (win->IsVisible() && win->PointerHit(aInPos))
   130 				{
   130 				{
   131 				aOriginalWinItIsIn=win;
   131 				aOriginalWinItIsIn=win;
   132 				winItIsInGroup=group;
   132 				winItIsInGroup=group;
   133 				win=win->Child();
   133 				win=win->Child();
   134 				}
   134 				}
   150 		for(group=(aForceInGroup ? aForceInGroup:Child());group!=NULL;group=group->NextSibling())
   150 		for(group=(aForceInGroup ? aForceInGroup:Child());group!=NULL;group=group->NextSibling())
   151 			{
   151 			{
   152 			CWsClientWindow *win=group->Child();
   152 			CWsClientWindow *win=group->Child();
   153 			while(win!=NULL)
   153 			while(win!=NULL)
   154 				{
   154 				{
   155 				const TRegion *baseArea=win->BaseArea();
       
   156 				const TBool underTheSameGroup=winItIsInGroup==group;
   155 				const TBool underTheSameGroup=winItIsInGroup==group;
   157 				if (win->IsVisible() && 
   156 				if (win->IsVisible() && 
   158 					((win->iFlags&EFlagPointerCaptured && 
   157 					((win->iFlags&EFlagPointerCaptured && 
   159 					 ((!underTheSameGroup && win->iFlags&EFlagPointerCaptureAllGroups) || 
   158 					 ((!underTheSameGroup && win->iFlags&EFlagPointerCaptureAllGroups) || 
   160 					  (winItIsInGroup==NULL && group==CWsTop::FocusWindowGroup()) || 
   159 					  (winItIsInGroup==NULL && group==CWsTop::FocusWindowGroup()) || 
   161 					  (underTheSameGroup && win->iPointerCapturePriority>=aOriginalWinItIsIn->iPointerCapturePriority)))
   160 					  (underTheSameGroup && win->iPointerCapturePriority>=aOriginalWinItIsIn->iPointerCapturePriority)))
   162 					   || baseArea->Contains(aInPos)))
   161 					   || win->PointerHit(aInPos)))
   163 					{
   162 					{
   164 				 	winItIsIn=win;
   163 				 	winItIsIn=win;
   165 					win=win->Child();
   164 					win=win->Child();
   166 					}
   165 					}
   167 				else
   166 				else