Compare commits
2 commits
f48641bb58
...
ba378b2a43
Author | SHA1 | Date | |
---|---|---|---|
Christian Burger | ba378b2a43 | ||
Christian Burger | 870fa80fc7 |
|
@ -130,6 +130,10 @@ namespace krikkel::NCurses
|
|||
windowManager->updateLayout();
|
||||
windowManager->refresh();
|
||||
break;
|
||||
case KEY_F(4):
|
||||
windowManager->invertWindowsVisibility();
|
||||
windowManager->updateLayout();
|
||||
windowManager->refresh();
|
||||
case KEY_F(5):
|
||||
windowManager->refresh();
|
||||
break;
|
||||
|
|
|
@ -27,6 +27,11 @@ namespace krikkel::NCurses
|
|||
visibleStack.push_back(stackElement);
|
||||
}
|
||||
|
||||
std::recursive_mutex *TilingWindowManager::getNCursesMutex()
|
||||
{
|
||||
return ncursesMutex;
|
||||
}
|
||||
|
||||
void TilingWindowManager::hideWindow(Window *window)
|
||||
{
|
||||
if(window->hidden)
|
||||
|
@ -60,6 +65,27 @@ namespace krikkel::NCurses
|
|||
}
|
||||
}
|
||||
|
||||
void TilingWindowManager::invertWindowsVisibility()
|
||||
{
|
||||
list<WindowStackElement> originallyVisibleStack(visibleStack);
|
||||
list<WindowStackElement>::iterator originallyVisibleStackIterator = originallyVisibleStack.begin();
|
||||
visibleStack.clear();
|
||||
|
||||
for(WindowStackElement currentWindowElement : stack)
|
||||
if(originallyVisibleStackIterator != originallyVisibleStack.end()
|
||||
&& currentWindowElement == *originallyVisibleStackIterator)
|
||||
{
|
||||
currentWindowElement.first->hidden = true;
|
||||
++originallyVisibleStackIterator;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
currentWindowElement.first->hidden = false;
|
||||
visibleStack.push_back(currentWindowElement);
|
||||
}
|
||||
}
|
||||
|
||||
int TilingWindowManager::resize(int rows, int cols)
|
||||
{
|
||||
int result = Window::resize(rows, cols);
|
||||
|
|
|
@ -36,15 +36,19 @@ namespace krikkel::NCurses
|
|||
typedef std::pair<Window *, windowDimension> WindowStackElement;
|
||||
|
||||
TilingWindowManager(NCursesWindow *rootWindow, std::recursive_mutex *ncursesMutex);
|
||||
std::recursive_mutex *getNCursesMutex();
|
||||
void addWindow(Window *window, windowDimension size = -1);
|
||||
|
||||
int resize(int rows, int cols) override;
|
||||
int refresh() override;
|
||||
void updateLayout();
|
||||
|
||||
void hideWindow(Window *window);
|
||||
void showWindow(Window *window);
|
||||
void invertWindowsVisibility();
|
||||
|
||||
protected:
|
||||
/// @todo rename to `nCursesMutex`?
|
||||
std::recursive_mutex *ncursesMutex;
|
||||
std::list<WindowStackElement> stack, visibleStack;
|
||||
|
||||
|
|
Loading…
Reference in a new issue