Krita Source Code Documentation
Loading...
Searching...
No Matches
KisWindowLayoutResource::Private Struct Reference

Classes

struct  Window
 
struct  WindowGeometry
 

Public Member Functions

void closeUnneededWindows (QList< QPointer< KisMainWindow > > &currentWindows)
 
QList< QScreen * > getScreensInConsistentOrder ()
 
void migrateViewsFromClosingWindows (QVector< QPointer< KisMainWindow > > &closingWindows) const
 
void openNecessaryWindows (QList< QPointer< KisMainWindow > > &currentWindows)
 
 Private ()=default
 
 Private (const Private &rhs)=default
 
 Private (QVector< Window > windows)
 

Public Attributes

QUuid primaryWindow
 
bool primaryWorkspaceFollowsFocus {false}
 
bool showImageInAllWindows {false}
 
QVector< Windowwindows
 

Detailed Description

Definition at line 26 of file KisWindowLayoutResource.cpp.

Constructor & Destructor Documentation

◆ Private() [1/3]

KisWindowLayoutResource::Private::Private ( )
default

◆ Private() [2/3]

KisWindowLayoutResource::Private::Private ( const Private & rhs)
default

◆ Private() [3/3]

KisWindowLayoutResource::Private::Private ( QVector< Window > windows)
inlineexplicit

Definition at line 113 of file KisWindowLayoutResource.cpp.

114 : windows(std::move(windows))
115 {}

Member Function Documentation

◆ closeUnneededWindows()

void KisWindowLayoutResource::Private::closeUnneededWindows ( QList< QPointer< KisMainWindow > > & currentWindows)
inline

Definition at line 131 of file KisWindowLayoutResource.cpp.

131 {
132 QVector<QPointer<KisMainWindow>> windowsToClose;
133
134 Q_FOREACH(KisMainWindow *mainWindow, currentWindows) {
135 bool keep = false;
136 Q_FOREACH(const Window &window, windows) {
137 if (window.windowId == mainWindow->id()) {
138 keep = true;
139 break;
140 }
141 }
142
143 if (!keep) {
144 windowsToClose.append(mainWindow);
145
146 // Set the window hidden to prevent "show image in all windows" feature from opening new views on it
147 // while we migrate views onto the remaining windows
148 if (mainWindow->isVisible()) {
149 mainWindow->hide();
150 }
151 }
152 }
153
154 migrateViewsFromClosingWindows(windowsToClose);
155
156 Q_FOREACH(QPointer<KisMainWindow> mainWindow, windowsToClose) {
157 mainWindow->close();
158 }
159 }
Main window for Krita.
void migrateViewsFromClosingWindows(QVector< QPointer< KisMainWindow > > &closingWindows) const

References KisMainWindow::close, KisMainWindow::id, migrateViewsFromClosingWindows(), KisWindowLayoutResource::Private::Window::windowId, and windows.

◆ getScreensInConsistentOrder()

QList< QScreen * > KisWindowLayoutResource::Private::getScreensInConsistentOrder ( )
inline

Definition at line 196 of file KisWindowLayoutResource.cpp.

196 {
197 QList<QScreen*> screens = QGuiApplication::screens();
198
199 std::sort(screens.begin(), screens.end(), [](const QScreen *a, const QScreen *b) {
200 QRect aRect = a->geometry();
201 QRect bRect = b->geometry();
202
203 if (aRect.y() == bRect.y()) return aRect.x() < bRect.x();
204 return (aRect.y() < bRect.y());
205 });
206
207 return screens;
208 }

◆ migrateViewsFromClosingWindows()

void KisWindowLayoutResource::Private::migrateViewsFromClosingWindows ( QVector< QPointer< KisMainWindow > > & closingWindows) const
inline

Definition at line 161 of file KisWindowLayoutResource.cpp.

162 {
163 auto *kisPart = KisPart::instance();
164 KisMainWindow *migrationTarget = nullptr;
165
166 Q_FOREACH(KisMainWindow *mainWindow, kisPart->mainWindows()) {
167 if (!closingWindows.contains(mainWindow)) {
168 migrationTarget = mainWindow;
169 break;
170 }
171 }
172
173 if (!migrationTarget) {
174 qWarning() << "Problem: window layout with no windows would leave user with zero main windows.";
175 migrationTarget = closingWindows.takeLast();
176 migrationTarget->show();
177 }
178
179 QVector<KisDocument*> visibleDocuments;
180 Q_FOREACH(KisView *view, kisPart->views()) {
181 KisMainWindow *window = view->mainWindow();
182 if (!closingWindows.contains(window)) {
183 visibleDocuments.append(view->document());
184 }
185 }
186
187 Q_FOREACH(KisDocument *document, kisPart->documents()) {
188 if (!visibleDocuments.contains(document)) {
189 visibleDocuments.append(document);
190 migrationTarget->newView(document);
191 }
192 }
193 }
KisView * newView(QObject *document, QMdiSubWindow *subWindow=0)
static KisPart * instance()
Definition KisPart.cpp:131
KisMainWindow * mainWindow() const
Definition KisView.cpp:1093
QPointer< KisDocument > document
Definition KisView.cpp:121

References KisView::document, KisPart::instance(), KisView::mainWindow(), and KisMainWindow::newView().

◆ openNecessaryWindows()

void KisWindowLayoutResource::Private::openNecessaryWindows ( QList< QPointer< KisMainWindow > > & currentWindows)
inline

Definition at line 117 of file KisWindowLayoutResource.cpp.

117 {
118 auto *kisPart = KisPart::instance();
119
120 Q_FOREACH(const Window &window, windows) {
121 QPointer<KisMainWindow> mainWindow = kisPart->windowById(window.windowId);
122
123 if (mainWindow.isNull()) {
124 mainWindow = kisPart->createMainWindow(window.windowId);
125 currentWindows.append(mainWindow);
126 mainWindow->show();
127 }
128 }
129 }

References KisPart::instance(), KisWindowLayoutResource::Private::Window::windowId, and windows.

Member Data Documentation

◆ primaryWindow

QUuid KisWindowLayoutResource::Private::primaryWindow

Definition at line 107 of file KisWindowLayoutResource.cpp.

◆ primaryWorkspaceFollowsFocus

bool KisWindowLayoutResource::Private::primaryWorkspaceFollowsFocus {false}

Definition at line 106 of file KisWindowLayoutResource.cpp.

106{false};

◆ showImageInAllWindows

bool KisWindowLayoutResource::Private::showImageInAllWindows {false}

Definition at line 105 of file KisWindowLayoutResource.cpp.

105{false};

◆ windows

QVector<Window> KisWindowLayoutResource::Private::windows

Definition at line 104 of file KisWindowLayoutResource.cpp.


The documentation for this struct was generated from the following file: