diff --git a/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java b/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java index b71e75c..73ee592 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java +++ b/src/main/java/cz/kamma/kfmanager/ui/MainWindow.java @@ -778,6 +778,8 @@ public class MainWindow extends JFrame { @Override public void mousePressed(MouseEvent e) { if (SwingUtilities.isLeftMouseButton(e)) { + // Close the menu first to release focus + MenuSelectionManager.defaultManager().clearSelectedPath(); showSettingsDialog(); } } diff --git a/src/main/java/cz/kamma/kfmanager/ui/SettingsDialog.java b/src/main/java/cz/kamma/kfmanager/ui/SettingsDialog.java index 68df6b0..937d98e 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/SettingsDialog.java +++ b/src/main/java/cz/kamma/kfmanager/ui/SettingsDialog.java @@ -239,6 +239,14 @@ public class SettingsDialog extends JDialog { btns.add(ok); btns.add(cancel); add(btns, BorderLayout.SOUTH); + + // Ensure dialog has focus when opened + addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowOpened(java.awt.event.WindowEvent e) { + categoryList.requestFocusInWindow(); + } + }); } private JPanel buildAppearancePanel() { @@ -640,6 +648,7 @@ public class SettingsDialog extends JDialog { gbc.gridx = 1; gbc.weightx = 0; + gbc.gridwidth = 2; // Span across the rest JButton browseBtn = new JButton("Browse..."); browseBtn.addActionListener(e -> { JFileChooser chooser = new JFileChooser(); @@ -666,8 +675,18 @@ public class SettingsDialog extends JDialog { gbc.gridx = 0; gbc.gridy++; gbc.gridwidth = 1; - gbc.weightx = 0.5; + gbc.weightx = 0; + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.WEST; + + JPanel actionBtnPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); JButton exportBtn = new JButton("Export"); + JButton importBtn = new JButton("Import"); + + Dimension actionSize = new Dimension(100, exportBtn.getPreferredSize().height); + exportBtn.setPreferredSize(actionSize); + importBtn.setPreferredSize(actionSize); + exportBtn.addActionListener(e -> { String path = pathField.getText(); if (path.isEmpty()) { @@ -683,10 +702,7 @@ public class SettingsDialog extends JDialog { JOptionPane.showMessageDialog(this, "Error exporting configuration: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } }); - p.add(exportBtn, gbc); - gbc.gridx = 1; - JButton importBtn = new JButton("Import"); importBtn.addActionListener(e -> { String path = pathField.getText(); if (path.isEmpty()) { @@ -714,13 +730,18 @@ public class SettingsDialog extends JDialog { } } }); - p.add(importBtn, gbc); + + actionBtnPanel.add(exportBtn); + actionBtnPanel.add(Box.createHorizontalStrut(10)); + actionBtnPanel.add(importBtn); + p.add(actionBtnPanel, gbc); // Add spacer gbc.gridx = 0; gbc.gridy++; gbc.gridwidth = 3; gbc.weighty = 1.0; + gbc.fill = GridBagConstraints.BOTH; p.add(new JPanel(), gbc); return p;