diff -r 000000000000 -r 6474c204b198 widget/qt/mozqwidget.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widget/qt/mozqwidget.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,71 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=4 et sw=4 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef MOZQWIDGET_H +#define MOZQWIDGET_H + +#include "nsIWidget.h" + +#include + +QT_BEGIN_NAMESPACE +class QPainter; +class QExposeEvent; +class QResizeEvent; +QT_END_NAMESPACE + +namespace mozilla { +namespace widget { + +class nsWindow; + +class MozQWidget : public QWindow +{ + Q_OBJECT +public: + explicit MozQWidget(nsWindow* aReceiver, QWindow* aParent = 0); + ~MozQWidget(); + + virtual void render(QPainter* painter); + + virtual nsWindow* getReceiver() { return mReceiver; }; + virtual void dropReceiver() { mReceiver = nullptr; }; + virtual void SetCursor(nsCursor aCursor); + +public Q_SLOTS: + void renderLater(); + void renderNow(); + +protected: + virtual bool event(QEvent* event); + virtual void exposeEvent(QExposeEvent* event); + virtual void focusInEvent(QFocusEvent* event); + virtual void focusOutEvent(QFocusEvent* event); + virtual void hideEvent(QHideEvent* event); + virtual void keyPressEvent(QKeyEvent* event); + virtual void keyReleaseEvent(QKeyEvent* event); + virtual void mouseDoubleClickEvent(QMouseEvent* event); + virtual void mouseMoveEvent(QMouseEvent* event); + virtual void mousePressEvent(QMouseEvent* event); + virtual void mouseReleaseEvent(QMouseEvent* event); + virtual void moveEvent(QMoveEvent* event); + virtual void resizeEvent(QResizeEvent* event); + virtual void showEvent(QShowEvent* event); + virtual void tabletEvent(QTabletEvent* event); + virtual void touchEvent(QTouchEvent* event); + virtual void wheelEvent(QWheelEvent* event); + +private: + nsWindow* mReceiver; + bool mUpdatePending; + nsWindowType mWindowType; +}; + +} // namespace widget +} // namespace mozilla + +#endif // MOZQWIDGET_H +