Jaky pouzivate Window Manager?

LZ

7.6.07, Pavel Nemec <[EMAIL PROTECTED]>:
Mam docela zapeklitý problém,

mám testovací aplikaci
Frame, který na stisk klávesové zkratky otevře modální Dialog.
Celé to překriji Window.
Dialog se po stisknutí klávesy zavře ( a vrátí focus Frame)

Na Win a Mac se to chová "dobře". Tedy pokud držím klávesu tak na mě vyskakuje
Dialogové okno a zase se schovává.
Na Linuxu se ale po jedné či dvou iteracích focus prostě ztratí.

Nalezl jsem několik zmínek o problémech linux+focus.  Zvláštní také je že na
některých verzích linuxu (stejná verze javy) to funguje.

Nemáte s podobným problémem někdo více zkušeností.

Předem díky,
Pavel

Test case

import java.awt.*;
import java.awt.event.*;

class NLModal extends Dialog{
   NLModal (Frame f)
   {
       super (f, "modal", true);
       this.setBackground(Color.blue);
       this.setAlwaysOnTop(true);
      addWindowListener (new WindowAdapter (){
        public void windowClosing (WindowEvent e){
          dispose ();
      }});
      addKeyListener (new KeyAdapter (){
        public void keyPressed (KeyEvent e){
          System.out.println ("modal: " + e.paramString ());
          dispose ();
      }});
  }
}


public class NLTest
{
   public static void main (String[] args){
     Frame f = new Frame ("NLTest");
      f.setBackground(Color.yellow);

      f.addWindowListener (new WindowAdapter (){
        public void windowClosing (WindowEvent e){
          System.exit (0);
      }});
      f.addKeyListener (new KeyAdapter (){
        public void keyPressed (KeyEvent e){
            System.out.println ("frame: " + e.paramString ());;
            Dialog d = new NLModal ((Frame) e.getComponent ());
            d.setBounds (50, 100, 600, 100);
            d.show ();
      }});

      Dimension d = f.getToolkit ().getScreenSize ();

      f.setBounds (0, 0, 300, 25);
      f.show ();

      Window w = new Window (f);
      w.setBackground(Color.gray);
      w.setBounds (0, 50, 300, 200); // working
      //w.setBounds (0, 0, d.width, d.height-1); // working
      //w.setBounds (0, 0, d.width-1, d.height); // working
      //w.setBounds (0, 0, d.width, d.height);  // focus loss
      w.show ();

   }
}

--
Pavel Nemec
Software Engineer
---------------------------------------------------------------------
SuSE CR, s.r.o.                             e-mail: [EMAIL PROTECTED]
Lihovarska 1060/12                          tel:+420 284 028 981
190 00 Praha 9                              fax:+420 296 542 374
Ceska republika                             http://www.suse.cz




--
Lukas Zapletal
http://lukas.zapletalovi.com

Odpovedet emailem