(Java, Swing, JFrame) Свёртывание окна и kwin (KDE4)

Модератор: Модераторы разделов

gtn-gagarin
Сообщения: 95
ОС: Linux

(Java, Swing, JFrame) Свёртывание окна и kwin (KDE4)

Сообщение gtn-gagarin »

Есть следующий код на джаве:

Код:

import javax.swing.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Iconify extends JFrame { public Iconify() { initializeComponent(); } private void initializeComponent() { setSize(300, 300); setTitle("Window Listener"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.addWindowListener(new WindowAdapter() { // // Invoked when a window has been opened. // public void windowOpened(WindowEvent e) { System.out.println("Window Opened Event"); } // // Invoked when a window is in the process of being closed. // The close operation can be overridden at this point. // public void windowClosing(WindowEvent e) { System.out.println("Window Closing Event"); } // // Invoked when a window has been closed. // public void windowClosed(WindowEvent e) { System.out.println("Window Close Event"); } // // Invoked when a window is iconified. // public void windowIconified(WindowEvent e) { System.out.println("Window Iconified Event"); } // // Invoked when a window is de-iconified. // public void windowDeiconified(WindowEvent e) { System.out.println("Window Deiconified Event"); } // // Invoked when a window is activated. // public void windowActivated(WindowEvent e) { System.out.println("Window Activated Event"); } // // Invoked when a window is de-activated. // public void windowDeactivated(WindowEvent e) { System.out.println("Window Deactivated Event"); } // // Invoked when a window state is changed. // public void windowStateChanged(WindowEvent e) { System.out.println("Window State Changed Event"); } // // Invoked when the Window is set to be the focused Window, which means // that the Window, or one of its subcomponents, will receive keyboard // events. // public void windowGainedFocus(WindowEvent e) { System.out.println("Window Gained Focus Event"); } // // Invoked when the Window is no longer the focused Window, which means // that keyboard events will no longer be delivered to the Window or any of // its subcomponents. // public void windowLostFocus(WindowEvent e) { System.out.println("Window Lost Focus Event"); } }); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new Iconify().setVisible(true); } }); } }


Если запускать это в IceWM или в гноме, то при нажатии на кнопку "свернуть" созданного окна печатается следующее:

Код: Выделить всё

Window Iconified Event
Window Deactivated Event

Однако, в KDE (4.6.0) печатается только:

Код: Выделить всё

Window Deactivated Event

То есть, событие сворачивания не срабатывает.
Похоже, что KWin сворачивает окна как-то по-особому. (Или это баг?) Как в случае с KDE4 поймать событие сворачивания окна.
Спасибо сказали:
gtn-gagarin
Сообщения: 95
ОС: Linux

Re: (Java, Swing, JFrame) Свёртывание окна и kwin (KDE4)

Сообщение gtn-gagarin »

Собственно в багзилле кед объяснили сиё явление: https://bugs.kde.org/show_bug.cgi?id=270465
Спасибо сказали: