propagate keys to enclosing view like org.gjt.sp.jedit.gui.CompletionPopup, but without its KeyEventInterceptor;
authorwenzelm
Sat, 05 Jan 2013 20:06:24 +0100
changeset 50743 44571ac53fed
parent 50742 38114719a9bc
child 50744 f7ba30a816b9
propagate keys to enclosing view like org.gjt.sp.jedit.gui.CompletionPopup, but without its KeyEventInterceptor;
src/Tools/jEdit/src/pretty_text_area.scala
src/Tools/jEdit/src/pretty_tooltip.scala
--- a/src/Tools/jEdit/src/pretty_text_area.scala	Sat Jan 05 19:05:16 2013 +0100
+++ b/src/Tools/jEdit/src/pretty_text_area.scala	Sat Jan 05 20:06:24 2013 +0100
@@ -54,7 +54,8 @@
 
 class Pretty_Text_Area(
   view: View,
-  background: Option[Color] = None) extends JEditEmbeddedTextArea
+  background: Option[Color] = None,
+  propagate_keys: Boolean = false) extends JEditEmbeddedTextArea
 {
   text_area =>
 
@@ -167,13 +168,23 @@
         case KeyEvent.VK_C
         if (evt.getModifiers & Toolkit.getDefaultToolkit.getMenuShortcutKeyMask) != 0 =>
           Registers.copy(text_area, '$')
+          evt.consume
         case KeyEvent.VK_ESCAPE =>
           Window.getWindows foreach {
             case c: Pretty_Tooltip => c.dispose
             case _ =>
           }
+          evt.consume
         case _ =>
       }
+      if (propagate_keys && !evt.isConsumed)
+        view.getInputHandler.processKeyEvent(evt, View.ACTION_BAR, false)
+    }
+
+    override def keyTyped(evt: KeyEvent)
+    {
+      if (propagate_keys && !evt.isConsumed)
+        view.getInputHandler.processKeyEvent(evt, View.ACTION_BAR, false)
     }
   })
 
--- a/src/Tools/jEdit/src/pretty_tooltip.scala	Sat Jan 05 19:05:16 2013 +0100
+++ b/src/Tools/jEdit/src/pretty_tooltip.scala	Sat Jan 05 20:06:24 2013 +0100
@@ -10,7 +10,7 @@
 import isabelle._
 
 import java.awt.{Color, Point, BorderLayout, Window, Dimension}
-import java.awt.event.{WindowEvent, WindowAdapter}
+import java.awt.event.{WindowEvent, WindowAdapter, KeyEvent, KeyAdapter, KeyListener}
 import javax.swing.{SwingUtilities, JDialog, JPanel, JComponent}
 import javax.swing.border.LineBorder
 
@@ -55,7 +55,7 @@
 
   /* pretty text area */
 
-  val pretty_text_area = new Pretty_Text_Area(view, Some(rendering.tooltip_color))
+  val pretty_text_area = new Pretty_Text_Area(view, Some(rendering.tooltip_color), true)
   pretty_text_area.resize(Rendering.font_family(),
     Rendering.font_size("jedit_tooltip_font_scale").round)
   pretty_text_area.update(rendering.snapshot, results, body)