|
@@ -657,6 +657,9 @@ public final class SettingsDialog extends JDialog {
|
|
|
if (!fullscreenBox.isSelected()) {
|
|
|
displayResCombo.setModel(new DefaultComboBoxModel(
|
|
|
getWindowedResolutions(windowModes)));
|
|
|
+ if (displayResCombo.getItemCount() > 0) {
|
|
|
+ displayResCombo.setSelectedIndex(displayResCombo.getItemCount()-1);
|
|
|
+ }
|
|
|
colorDepthCombo.setModel(new DefaultComboBoxModel(new String[]{
|
|
|
"24 bpp", "16 bpp"}));
|
|
|
displayFreqCombo.setModel(new DefaultComboBoxModel(
|
|
@@ -664,7 +667,10 @@ public final class SettingsDialog extends JDialog {
|
|
|
displayFreqCombo.setEnabled(false);
|
|
|
} else {
|
|
|
displayResCombo.setModel(new DefaultComboBoxModel(
|
|
|
- getResolutions(modes, Integer.MAX_VALUE)));
|
|
|
+ getResolutions(modes, Integer.MAX_VALUE, Integer.MAX_VALUE)));
|
|
|
+ if (displayResCombo.getItemCount() > 0) {
|
|
|
+ displayResCombo.setSelectedIndex(displayResCombo.getItemCount()-1);
|
|
|
+ }
|
|
|
displayFreqCombo.setEnabled(true);
|
|
|
updateDisplayChoices();
|
|
|
}
|
|
@@ -704,17 +710,21 @@ public final class SettingsDialog extends JDialog {
|
|
|
* Returns every unique resolution from an array of <code>DisplayMode</code>s
|
|
|
* where the resolution is greater than the configured minimums.
|
|
|
*/
|
|
|
- private String[] getResolutions(DisplayMode[] modes, int heightLimit) {
|
|
|
+ private String[] getResolutions(DisplayMode[] modes, int heightLimit, int widthLimit) {
|
|
|
+ Insets insets = getInsets();
|
|
|
+ heightLimit -= insets.top + insets.bottom;
|
|
|
+ widthLimit -= insets.left + insets.right;
|
|
|
+
|
|
|
ArrayList<String> resolutions = new ArrayList<String>(modes.length);
|
|
|
for (int i = 0; i < modes.length; i++) {
|
|
|
int height = modes[i].getHeight();
|
|
|
int width = modes[i].getWidth();
|
|
|
- if (width >= minWidth && height >= minHeight && height <= heightLimit) {
|
|
|
- if (height == heightLimit) {
|
|
|
- // If height is equal to height limit then subtract the size of the window frame and use that
|
|
|
- Insets insets = getInsets();
|
|
|
- height -= insets.top + insets.bottom;
|
|
|
- width -= insets.left + insets.right;
|
|
|
+ if (width >= minWidth && height >= minHeight) {
|
|
|
+ if (height >= heightLimit) {
|
|
|
+ height = heightLimit;
|
|
|
+ }
|
|
|
+ if (width >= widthLimit) {
|
|
|
+ width = widthLimit;
|
|
|
}
|
|
|
|
|
|
String res = width + " x " + height;
|
|
@@ -736,13 +746,18 @@ public final class SettingsDialog extends JDialog {
|
|
|
*/
|
|
|
private String[] getWindowedResolutions(DisplayMode[] modes) {
|
|
|
int maxHeight = 0;
|
|
|
+ int maxWidth = 0;
|
|
|
+
|
|
|
for (int i = 0; i < modes.length; i++) {
|
|
|
if (maxHeight < modes[i].getHeight()) {
|
|
|
maxHeight = modes[i].getHeight();
|
|
|
}
|
|
|
+ if (maxWidth < modes[i].getWidth()) {
|
|
|
+ maxWidth = modes[i].getWidth();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- return getResolutions(modes, maxHeight);
|
|
|
+ return getResolutions(modes, maxHeight, maxWidth);
|
|
|
}
|
|
|
|
|
|
/**
|