Skip to content

Commit cc26875

Browse files
FlatLaf: Enable Window decoration option for Linux
1 parent 2196e46 commit cc26875

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLFCustoms.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,18 @@
1919

2020
package org.netbeans.swing.laf.flatlaf;
2121

22+
import com.formdev.flatlaf.util.SystemInfo;
2223
import com.formdev.flatlaf.util.UIScale;
2324
import java.awt.Color;
2425
import java.awt.Font;
2526
import java.awt.Insets;
2627
import java.util.ArrayList;
2728
import java.util.Arrays;
2829
import java.util.List;
30+
import java.util.concurrent.Callable;
2931
import javax.swing.BorderFactory;
3032
import javax.swing.InputMap;
33+
import javax.swing.JFrame;
3134
import javax.swing.KeyStroke;
3235
import javax.swing.UIDefaults;
3336
import javax.swing.UIDefaults.LazyValue;
@@ -151,6 +154,10 @@ EDITOR_TOOLBAR_BORDER, new CompoundBorder(DPISafeBorder.matte(0, 0, 1, 0, editor
151154
}
152155
}
153156
}
157+
if (SystemInfo.isLinux) {
158+
result.add("windowDefaultLookAndFeelDecorated");
159+
result.add(FlatLafPrefs.isUseWindowDecorations());
160+
}
154161
return result.toArray();
155162
}
156163

platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafOptionsPanel.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package org.netbeans.swing.laf.flatlaf;
2020

2121
import com.formdev.flatlaf.FlatLaf;
22+
import com.formdev.flatlaf.FlatLightLaf;
2223
import com.formdev.flatlaf.util.SystemInfo;
2324
import java.awt.Color;
2425
import java.io.BufferedWriter;
@@ -52,7 +53,8 @@
5253
public class FlatLafOptionsPanel extends javax.swing.JPanel {
5354

5455
private static final Color DEFAULT = new Color(0, true);
55-
private static final Color currentAccentColor = FlatLafPrefs.getAccentColor();
56+
private static final Color currentAccentColor = getPrefsAccentColorOrDefault();
57+
private static final boolean currentUseWindowDecorations = FlatLafPrefs.isUseWindowDecorations();
5658

5759
private static final RequestProcessor RP = new RequestProcessor(FlatLafOptionsPanel.class);
5860

@@ -108,7 +110,7 @@ private void initAccentColor() {
108110
}
109111

110112
private void updateEnabled() {
111-
boolean supportsWindowDecorations = FlatLaf.supportsNativeWindowDecorations();
113+
boolean supportsWindowDecorations = FlatLaf.supportsNativeWindowDecorations() || new FlatLightLaf().getSupportsWindowDecorations();
112114
useWindowDecorationsCheckBox.setEnabled(supportsWindowDecorations);
113115
unifiedTitleBarCheckBox.setEnabled(supportsWindowDecorations && useWindowDecorationsCheckBox.isSelected());
114116
menuBarEmbeddedCheckBox.setEnabled(supportsWindowDecorations && useWindowDecorationsCheckBox.isSelected());
@@ -341,7 +343,8 @@ protected boolean store() {
341343
FlatLafPrefs.setUnderlineMenuSelection(underlineMenuSelectionCheckBox.isSelected());
342344
FlatLafPrefs.setAlwaysShowMnemonics(alwaysShowMnemonicsCheckBox.isSelected());
343345

344-
if (!Objects.equals(accentColor, currentAccentColor)) {
346+
if (!Objects.equals(accentColor, currentAccentColor)
347+
|| SystemInfo.isLinux && useWindowDecorationsCheckBox.isSelected() != currentUseWindowDecorations) {
345348
askForRestart();
346349
}
347350
return false;
@@ -368,7 +371,7 @@ private void askForRestart() {
368371
NotificationDisplayer.Priority.NORMAL, NotificationDisplayer.Category.INFO);
369372
}
370373

371-
private Color getPrefsAccentColorOrDefault() {
374+
private static Color getPrefsAccentColorOrDefault() {
372375
Color accentColor = FlatLafPrefs.getAccentColor();
373376
return accentColor != null ? accentColor : DEFAULT;
374377
}

platform/o.n.swing.laf.flatlaf/src/org/netbeans/swing/laf/flatlaf/FlatLafPrefs.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.netbeans.swing.laf.flatlaf;
2020

21+
import com.formdev.flatlaf.util.SystemInfo;
2122
import java.awt.Color;
2223
import java.util.prefs.Preferences;
2324
import org.openide.util.NbPreferences;
@@ -37,6 +38,8 @@ class FlatLafPrefs {
3738

3839
private static final Preferences prefs = NbPreferences.forModule(FlatLafPrefs.class);
3940

41+
private static final boolean DEF_USE_WINDOW_DECORATIONS = SystemInfo.isWindows_10_orLater;
42+
4043
static Color getAccentColor() {
4144
return parseColor(prefs.get(ACCENT_COLOR, null));
4245
}
@@ -60,11 +63,11 @@ static void setAccentColor(Color accentColor) {
6063
}
6164

6265
static boolean isUseWindowDecorations() {
63-
return prefs.getBoolean(USE_WINDOW_DECORATIONS, true);
66+
return prefs.getBoolean(USE_WINDOW_DECORATIONS, DEF_USE_WINDOW_DECORATIONS);
6467
}
6568

6669
static void setUseWindowDecorations(boolean value) {
67-
putBoolean(USE_WINDOW_DECORATIONS, value, true);
70+
putBoolean(USE_WINDOW_DECORATIONS, value, DEF_USE_WINDOW_DECORATIONS);
6871
}
6972

7073
static boolean isUnifiedTitleBar() {

platform/o.n.swing.plaf/src/org/netbeans/swing/plaf/Startup.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,9 @@ private void installLFCustoms (LFCustoms customs) {
334334
defaults.putDefaults (customs.getLookAndFeelCustomizationKeysAndValues());
335335
}
336336

337+
if (defaults.getBoolean("windowDefaultLookAndFeelDecorated")) {
338+
JFrame.setDefaultLookAndFeelDecorated(true);
339+
}
337340
}
338341

339342
private void runPostInstall() {

0 commit comments

Comments
 (0)