public bool OnLayerMouseMove(MouseEventArgs e)
 {
     // TODO: Needs to use persistent markers for mouse pos in each layer
     // try each layer from top to bottom
     foreach (ILayer layer in layers)
     {
         if (layer.Enabled && layer is SimpleGUILayer)
         {
             SimpleGUILayer guiLayer = (SimpleGUILayer)layer;
             GUILayerItem   item;
             if ((item = guiLayer.TraceCollisionPointer(e.Location)) != null && item.Visible && item.Enabled)
             {
                 if (item.WantMouseOver && layerMouseOverItem != item)
                 {
                     item.OnMouseEnter();
                     if (layerMouseOverItem != null && layerMouseOverItem.WantMouseOver)
                     {
                         layerMouseOverItem.OnMouseLeave();
                     }
                     layerMouseOverItem = item;
                 }
                 return(true);
             }
         }
     }
     if (layerMouseOverItem != null)
     {
         layerMouseOverItem.OnMouseLeave();
         layerMouseOverItem = null;
         return(true);
     }
     return(false);
 }
 public bool OnLayerMouseUp(MouseEventArgs e)
 {
     // find new item (that does not want mouseover)
     // try each layer from top to bottom
     foreach (ILayer layer in layers)
     {
         if (layer.Enabled && layer is SimpleGUILayer)
         {
             SimpleGUILayer guiLayer = (SimpleGUILayer)layer;
             GUILayerItem   item;
             if ((item = guiLayer.TraceCollisionPointer(e.Location)) != null && item.Visible && item.Enabled)
             {
                 if (item == layerMouseDownItem)
                 {
                     layerMouseDownItem.OnMouseUp(e);
                 }
                 else if (layerMouseDownItem != null)
                 {
                     layerMouseDownItem.OnMouseUp(null);
                 }
                 layerMouseDownItem = null;
                 return(true);
             }
         }
     }
     if (layerMouseOverItem != null)
     {
         layerMouseOverItem.OnMouseUp(e);
     }
     return(false);
 }
Exemple #3
0
 public bool OnLayerMouseDown(MouseEventArgs e)
 {
     if (layerMouseOverItem != null)
     {
         // use existing found item
         if (layerMouseOverItem.WantMouseClicks)
         {
             layerMouseOverItem.OnMouseDown(e);
         }
         layerMouseDownItem = layerMouseOverItem;
         return(true);
     }
     else
     {
         // find new item (that does not want mouseover)
         // try each layer from top to bottom
         foreach (ILayer layer in layers)
         {
             if (layer.Enabled && layer is SimpleGUILayer)
             {
                 SimpleGUILayer guiLayer = (SimpleGUILayer)layer;
                 GUILayerItem   item;
                 if ((item = guiLayer.TraceCollisionPointer(e.Location)) != null && item.Visible /* && item.Enabled*/)
                 {
                     if (item.WantMouseClicks)
                     {
                         item.OnMouseDown(e);
                         layerMouseDownItem = item;
                     }
                     return(true);
                 }
             }
         }
     }
     return(false);
 }