 							getStyleForEscapedSelectorPath(def.path + '@:hover@');
 						node.@['class'] = hoverStyle.textStyleName(node.parent() == null);
 						labelChanged = true;
+						def.pointer ||= (hoverStyle.hasStyle('cursor') 
+							? hoverStyle.getStyle('cursor').specifiedValue()
+							: null) == 'pointer';
+					}
+					if (def.start > innerStart || def.end < innerEnd)
+					{
+						innerStart = def.start;
+						innerEnd = def.end;
+						usePointer = def.pointer;
 					}
 				}
 				else if (def.hover)

				return;
			}
			
			for (var i : int = m_nodesMap.length; i--;)
			{
				var def : Object = m_nodesMap[i];
				var node : XML = def.node;
				if (int(m_nodesMap[i].start) <= index && int(m_nodesMap[i].end) > index)
				{
					if (!def.hover)
					{

				{
					invalidate();
				}
			}
			if (usePointer)
			{
				m_usePointer = true;
				if (!buttonMode)
				{
					buttonMode = true;
					useHandCursor = true;
				}
			}
			else if (buttonMode && m_currentStyles.cursor != 'pointer')
			{
				buttonMode = false;
				useHandCursor = false;
			}
			m_lastHoverIndex = index;
		}
