101
101
tracepoint(qtmirserver, surfacePlacementStart);
103
// TODO: Callback unity8 so that it can make a decision on that.
104
// unity8 must bear in mind that the called function will be on a Mir thread though.
105
// The QPA shouldn't be deciding for itself on such things.
104
// can be connected to via Qt::BlockingQueuedConnection to alter surface initial size
106
int surfaceType = requestParameters.type.is_set() ? requestParameters.type.value() : -1;
107
Q_EMIT sessionAboutToCreateSurface(session, surfaceType, initialSize);
107
109
ms::SurfaceCreationParameters placedParameters = requestParameters;
109
// Just make it fullscreen for now
110
mir::geometry::Rectangle rect{requestParameters.top_left, requestParameters.size};
111
m_displayLayout->size_to_output(rect);
112
placedParameters.size = rect.size;
111
if (initialSize.isValid()) {
112
placedParameters.size.width = mir::geometry::Width(initialSize.width());
113
placedParameters.size.height = mir::geometry::Height(initialSize.height());
115
qCWarning(QTMIR_MIR_MESSAGES) << "MirWindowManagerImpl::add_surface(): didn't get a initial surface"
116
" size from shell. Falling back to fullscreen placement";
117
// This is bad. Fallback to fullscreen
118
mir::geometry::Rectangle rect{requestParameters.top_left, requestParameters.size};
119
m_displayLayout->size_to_output(rect);
120
placedParameters.size = rect.size;
114
124
qCDebug(QTMIR_MIR_MESSAGES) << "MirWindowManagerImpl::add_surface(): size requested ("
115
125
<< requestParameters.size.width.as_int() << "," << requestParameters.size.height.as_int() << ") and placed ("
177
std::unique_ptr<MirWindowManager> MirWindowManager::create(
187
std::shared_ptr<MirWindowManager> MirWindowManager::create(
178
188
mir::shell::FocusController* /*focus_controller*/,
179
189
const std::shared_ptr<mir::shell::DisplayLayout> &displayLayout)
181
return std::make_unique<MirWindowManagerImpl>(displayLayout);
191
return std::make_shared<MirWindowManagerImpl>(displayLayout);