diff game/IDMContainer.java @ 175:55ea5821c802

Implement "real" widget modality.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 16 Mar 2017 10:42:54 +0200
parents f664e851bc07
children 4568c8016377
line wrap: on
line diff
--- a/game/IDMContainer.java	Mon Mar 06 11:55:40 2017 +0200
+++ b/game/IDMContainer.java	Thu Mar 16 10:42:54 2017 +0200
@@ -83,6 +83,10 @@
 
     synchronized public boolean mousePressed(MouseEvent e)
     {
+        IDMWidget modal = getActiveModalWidget();
+        if (modal != null)
+            return modal.mousePressed(e);
+
         try {
             beginIteration();
             for (IDMWidget widget : children)
@@ -100,6 +104,10 @@
 
     synchronized public boolean mouseReleased(MouseEvent e)
     {
+        IDMWidget modal = getActiveModalWidget();
+        if (modal != null)
+            return modal.mouseReleased(e);
+
         try {
             beginIteration();
             for (IDMWidget widget : children)
@@ -114,6 +122,10 @@
 
     synchronized public boolean mouseExited(MouseEvent e)
     {
+        IDMWidget modal = getActiveModalWidget();
+        if (modal != null)
+            return modal.mouseExited(e);
+
         try {
             beginIteration();
             for (IDMWidget widget : children)
@@ -128,6 +140,10 @@
 
     synchronized public boolean mouseEntered(MouseEvent e)
     {
+        IDMWidget modal = getActiveModalWidget();
+        if (modal != null)
+            return modal.mouseEntered(e);
+
         try {
             beginIteration();
             for (IDMWidget widget : children)
@@ -145,6 +161,10 @@
 
     synchronized public boolean keyPressed(KeyEvent e)
     {
+        IDMWidget modal = getActiveModalWidget();
+        if (modal != null)
+            return modal.keyPressed(e);
+
         try {
             beginIteration();
             for (IDMWidget widget : children)
@@ -186,4 +206,14 @@
         }
         return false;
     }
+
+    synchronized public IDMWidget getActiveModalWidget()
+    {
+        for (IDMWidget widget : children)
+        {
+            if (widget.isModal())
+                return widget;
+        }
+        return null;
+    }
 }