Skip to content

Commit

Permalink
Merge pull request mabe02#303 from brobo/master
Browse files Browse the repository at this point in the history
Allow focus to pass back to background pane
  • Loading branch information
mabe02 authored Apr 15, 2017
2 parents 713514b + c44a63e commit c322b6f
Showing 1 changed file with 9 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -379,15 +379,18 @@ public synchronized WindowBasedTextGUI removeWindow(Window window) {
}
window.setTextGUI(null);
windowManager.onRemoved(this, window, windows);
if(activeWindow == window) {
changeWindow: if(activeWindow == window) {
//Go backward in reverse and find the first suitable window
for(int index = windows.size() - 1; index >= 0; index--) {
Window candidate = windows.get(index);
if(!candidate.getHints().contains(Window.Hint.NO_FOCUS)) {
setActiveWindow(candidate);
break;
break changeWindow;
}
}
// No suitable window was found, so pass control back
// to the background pane
setActiveWindow(null);
}
invalidate();
return this;
Expand Down Expand Up @@ -427,7 +430,7 @@ public synchronized Collection<Window> getWindows() {
@Override
public synchronized MultiWindowTextGUI setActiveWindow(Window activeWindow) {
this.activeWindow = activeWindow;
moveToTop(activeWindow);
if (activeWindow != null) moveToTop(activeWindow);
return this;
}

Expand Down Expand Up @@ -471,11 +474,11 @@ public synchronized WindowBasedTextGUI moveToTop(Window window) {
* @return Itself
*/
public synchronized WindowBasedTextGUI cycleActiveWindow(boolean reverse) {
if(windows.isEmpty() || windows.size() == 1 || activeWindow.getHints().contains(Window.Hint.MODAL)) {
if(windows.isEmpty() || windows.size() == 1 || (activeWindow != null && activeWindow.getHints().contains(Window.Hint.MODAL))) {
return this;
}
Window originalActiveWindow = activeWindow;
Window nextWindow = getNextWindow(reverse, originalActiveWindow);
Window nextWindow = activeWindow == null ? windows.get(0) : getNextWindow(reverse, activeWindow);
while(nextWindow.getHints().contains(Window.Hint.NO_FOCUS)) {
nextWindow = getNextWindow(reverse, nextWindow);
if(nextWindow == originalActiveWindow) {
Expand All @@ -486,7 +489,7 @@ public synchronized WindowBasedTextGUI cycleActiveWindow(boolean reverse) {
if(reverse) {
moveToTop(nextWindow);
}
else {
else if (originalActiveWindow != null) {
windows.remove(originalActiveWindow);
windows.add(0, originalActiveWindow);
}
Expand Down

0 comments on commit c322b6f

Please sign in to comment.