             showX = Math.max(showX - shift, 0);
         }
         
-        menu.isDirectionLeft = this.x > showX;
+        menu.isDirectionLeft = (isLayoutMirrored) ? (this.x <= showX) : (this.x > showX);
         
         // now do y
         shift = screenPoint.y + menu.getExplicitOrMeasuredHeight() - screen.bottom;

        var screenPoint:Point = sbRoot.localToGlobal(new Point(showX, showY));
        
        // do x
        var shift:Number = screenPoint.x + menu.getExplicitOrMeasuredWidth() - screen.right;
        if (shift > 0 || screenPoint.x < screen.x)
        {
            // if we want to ensure our parent's visible, let's 

import flash.utils.clearInterval;
import flash.utils.setTimeout;
import flash.xml.XMLNode;

import mx.collections.ArrayCollection;
import mx.collections.CursorBookmark;
import mx.collections.ICollectionView;
