Bug 12682 fixed: Key events were disabled after zooming 89/13089/2
Calixte DENIZET [Wed, 6 Nov 2013 11:40:15 +0000 (12:40 +0100)]
Change-Id: I4a912d6a5bb0458bd230b86b36c1a7420cb46e88

scilab/CHANGES_5.5.X
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/canvas/SwingScilabCanvas.java
scilab/modules/gui/tests/nonreg_tests/bug_12682.tst [new file with mode: 0644]

index 7ca14c0..0a96559 100644 (file)
@@ -59,6 +59,8 @@ Scilab Bug Fixes
 
 * Bug #11680 fixed - GUI functions in Scilab 5.4.X were much slower than in Scilab 5.3.3.
 
+* Bug #12682 fixed - Key events were disabled after zooming.
+
 * Bug #12769 fixed - xset("window", 1) did not set the current axes.
 
 * Bug #12882 fixed - Some help pages were not clear.
index 82eb568..90292e7 100644 (file)
@@ -22,6 +22,8 @@ import java.awt.Color;
 import java.awt.Component;
 import java.awt.Cursor;
 import java.awt.Dimension;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 import java.awt.event.KeyListener;
 import java.awt.event.MouseAdapter;
@@ -100,6 +102,16 @@ public class SwingScilabCanvas extends JPanel implements SimpleCanvas {
             }
         });
 
+        /* Workaround for bug 12682: setFocusable(false) did not work...
+           the GLJPanel always got the focus after zooming. So when it gets it, the
+           canvas will get it.*/
+        drawableComponent.addFocusListener(new FocusAdapter() {
+            @Override
+            public void focusGained(FocusEvent e) {
+                SwingScilabCanvas.this.requestFocus();
+            }
+        });
+
         setBackground(Color.white);
         setFocusable(true);
         setEnabled(true);
diff --git a/scilab/modules/gui/tests/nonreg_tests/bug_12682.tst b/scilab/modules/gui/tests/nonreg_tests/bug_12682.tst
new file mode 100644 (file)
index 0000000..1c42d86
--- /dev/null
@@ -0,0 +1,31 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- INTERACTIVE TEST -->
+//
+// <-- Non-regression test for bug 12682 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/12682
+//
+// <-- Short Description -->
+// Key events were disabled after zooming.
+
+function MyEvents(fig_id,x,y,ibut)
+    if ibut>0 then disp(ibut);end
+endfunction
+
+fig=gcf();
+clf();
+fig.event_handler="MyEvents";
+t=linspace(0,20*%pi,10000);
+plot(t,sin(t))
+fig.event_handler_enable="on";
+
+// Hit A key to check that something is printed
+// Now zoom in using zoom button
+// Hit A key and check that something is printed
\ No newline at end of file