[wayland] Add an initialWindowSize to AbstractBackend

Useful for windowed backends like X11 and Wayland.
This commit is contained in:
Martin Gräßlin 2015-05-06 09:26:08 +02:00
parent 17d5839580
commit d45cf6ee8d
4 changed files with 12 additions and 4 deletions

View file

@ -61,6 +61,9 @@ public:
bool isReady() const {
return m_ready;
}
void setInitialWindowSize(const QSize &size) {
m_initialWindowSize = size;
}
void pointerMotion(const QPointF &position, quint32 time);
void pointerButtonPressed(quint32 button, quint32 time);
@ -93,6 +96,9 @@ protected:
}
void repaint(const QRect &rect);
void setReady(bool ready);
QSize initialWindowSize() const {
return m_initialWindowSize;
}
private Q_SLOTS:
void installThemeCursor(quint32 id, const QPoint &hotspot);
@ -108,6 +114,7 @@ private:
WaylandCursorTheme *m_cursorTheme = nullptr;
bool m_handlesOutputs = false;
bool m_ready = false;
QSize m_initialWindowSize;
};
}

View file

@ -45,10 +45,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
namespace KWin
{
X11WindowedBackend::X11WindowedBackend(const QByteArray &display, const QSize &size, QObject *parent)
X11WindowedBackend::X11WindowedBackend(const QByteArray &display, QObject *parent)
: AbstractBackend(parent)
, m_displayName(display)
, m_size(size)
{
}
@ -123,6 +122,7 @@ void X11WindowedBackend::createWindow()
XCB_EVENT_MASK_STRUCTURE_NOTIFY |
XCB_EVENT_MASK_EXPOSURE
};
m_size = initialWindowSize();
xcb_create_window(m_connection, XCB_COPY_FROM_PARENT, m_window, m_screen->root,
0, 0, m_size.width(), m_size.height(),
0, XCB_WINDOW_CLASS_INPUT_OUTPUT, XCB_COPY_FROM_PARENT, mask, values);

View file

@ -39,7 +39,7 @@ class KWIN_EXPORT X11WindowedBackend : public AbstractBackend
Q_OBJECT
Q_PROPERTY(QSize size READ size NOTIFY sizeChanged)
public:
X11WindowedBackend(const QByteArray &display, const QSize &size, QObject *parent);
X11WindowedBackend(const QByteArray &display, QObject *parent);
virtual ~X11WindowedBackend();
void init() override;

View file

@ -105,7 +105,7 @@ void ApplicationWayland::createBackend()
backend = b;
}
if (!backend && !m_x11Display.isEmpty()) {
KWin::X11WindowedBackend *x11Backend = new KWin::X11WindowedBackend(m_x11Display, m_backendSize, this);
KWin::X11WindowedBackend *x11Backend = new KWin::X11WindowedBackend(m_x11Display, this);
backend = x11Backend;
}
}
@ -129,6 +129,7 @@ void ApplicationWayland::createBackend()
::exit(1);
}
);
backend->setInitialWindowSize(m_backendSize);
backend->init();
} else {
std::cerr << "FATAL ERROR: could not create a backend, exiting now" << std::endl;