mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-13 07:17:13 -06:00
Merge pull request #294 from lsimediasarl/main
Fixed JInternalFrame iconified content snapshot for already installed DesktopManager
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.formdev.flatlaf.ui;
|
||||
|
||||
import javax.swing.DefaultDesktopManager;
|
||||
import javax.swing.DesktopManager;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JInternalFrame;
|
||||
import javax.swing.plaf.ComponentUI;
|
||||
@@ -42,11 +43,31 @@ public class FlatDesktopPaneUI
|
||||
|
||||
@Override
|
||||
protected void installDesktopManager() {
|
||||
desktopManager = desktop.getDesktopManager();
|
||||
if( desktopManager == null ) {
|
||||
desktopManager = new FlatDesktopManager();
|
||||
desktop.setDesktopManager( desktopManager );
|
||||
}
|
||||
// Check current installed desktop manager to avoid recursive call
|
||||
// with property change event (will fire a stack overflow).
|
||||
// Do not handle install if already installed.
|
||||
DesktopManager dm = desktop.getDesktopManager();
|
||||
if( dm instanceof FlatDesktopManager || dm instanceof FlatWrapperDesktopManager )
|
||||
return;
|
||||
|
||||
desktopManager = (dm != null)
|
||||
? new FlatWrapperDesktopManager( dm )
|
||||
: new FlatDesktopManager();
|
||||
desktop.setDesktopManager( desktopManager );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void uninstallDesktopManager() {
|
||||
// uninstall wrapper
|
||||
DesktopManager dm = desktop.getDesktopManager();
|
||||
if( dm instanceof FlatWrapperDesktopManager )
|
||||
desktop.setDesktopManager( ((FlatWrapperDesktopManager)dm).parent );
|
||||
|
||||
super.uninstallDesktopManager();
|
||||
}
|
||||
|
||||
private static void updateDockIcon( JInternalFrame f ) {
|
||||
((FlatDesktopIconUI)f.getDesktopIcon().getUI()).updateDockIcon();
|
||||
}
|
||||
|
||||
//---- class FlatDesktopManager -------------------------------------------
|
||||
@@ -59,7 +80,99 @@ public class FlatDesktopPaneUI
|
||||
public void iconifyFrame( JInternalFrame f ) {
|
||||
super.iconifyFrame( f );
|
||||
|
||||
((FlatDesktopIconUI)f.getDesktopIcon().getUI()).updateDockIcon();
|
||||
updateDockIcon( f );
|
||||
}
|
||||
}
|
||||
|
||||
//---- class FlatWrapperDesktopManager ------------------------------------
|
||||
|
||||
/**
|
||||
* For already installed desktop manager to use the flat desktop manager features.
|
||||
*/
|
||||
private class FlatWrapperDesktopManager
|
||||
implements DesktopManager
|
||||
{
|
||||
private final DesktopManager parent;
|
||||
|
||||
private FlatWrapperDesktopManager( DesktopManager parent ) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openFrame( JInternalFrame f ) {
|
||||
parent.openFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeFrame( JInternalFrame f ) {
|
||||
parent.closeFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void maximizeFrame( JInternalFrame f ) {
|
||||
parent.maximizeFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void minimizeFrame( JInternalFrame f ) {
|
||||
parent.minimizeFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void activateFrame( JInternalFrame f ) {
|
||||
parent.activateFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deactivateFrame( JInternalFrame f ) {
|
||||
parent.deactivateFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void iconifyFrame( JInternalFrame f ) {
|
||||
parent.iconifyFrame( f );
|
||||
|
||||
updateDockIcon( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deiconifyFrame( JInternalFrame f ) {
|
||||
parent.deiconifyFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beginDraggingFrame( JComponent f ) {
|
||||
parent.beginDraggingFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dragFrame( JComponent f, int newX, int newY ) {
|
||||
parent.dragFrame( f, newX, newY );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endDraggingFrame( JComponent f ) {
|
||||
parent.endDraggingFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beginResizingFrame( JComponent f, int direction ) {
|
||||
parent.beginResizingFrame( f, direction );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resizeFrame( JComponent f, int newX, int newY, int newWidth, int newHeight ) {
|
||||
parent.resizeFrame( f, newX, newY, newWidth, newHeight );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endResizingFrame( JComponent f ) {
|
||||
parent.endResizingFrame( f );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoundsForFrame( JComponent f, int newX, int newY, int newWidth, int newHeight ) {
|
||||
parent.setBoundsForFrame( f, newX, newY, newWidth, newHeight );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user