1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* vim: set ts=4 et sw=4 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #include <QtCore/QCoreApplication>
8 #include <QtGui/QResizeEvent>
10 #include "mozqwidget.h"
13 using namespace mozilla::widget
;
15 MozQWidget::MozQWidget(nsWindow
* aReceiver
, QWindow
* aParent
)
17 , mReceiver(aReceiver
)
18 , mUpdatePending(false)
20 mWindowType
= mReceiver
->WindowType();
23 MozQWidget::~MozQWidget()
27 void MozQWidget::render(QPainter
* painter
)
32 void MozQWidget::renderLater()
34 if (!isExposed() || eWindowType_child
!= mWindowType
|| !isVisible()) {
38 if (!mUpdatePending
) {
39 mUpdatePending
= true;
40 QCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest
));
44 void MozQWidget::renderNow()
46 if (!isExposed() || eWindowType_child
!= mWindowType
|| !isVisible()) {
53 bool MozQWidget::event(QEvent
* event
)
55 switch (event
->type()) {
56 case QEvent::UpdateRequest
:
57 mUpdatePending
= false;
61 return QWindow::event(event
);
65 void MozQWidget::exposeEvent(QExposeEvent
* event
)
68 if (!isExposed() || eWindowType_child
!= mWindowType
|| !isVisible()) {
71 LOG(("MozQWidget::%s [%p] flags:%x\n", __FUNCTION__
, (void *)this, flags()));
76 void MozQWidget::resizeEvent(QResizeEvent
* event
)
78 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
79 mReceiver
->resizeEvent(event
);
80 QWindow::resizeEvent(event
);
83 void MozQWidget::focusInEvent(QFocusEvent
* event
)
85 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
86 mReceiver
->focusInEvent(event
);
87 QWindow::focusInEvent(event
);
90 void MozQWidget::focusOutEvent(QFocusEvent
* event
)
92 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
93 mReceiver
->focusOutEvent(event
);
94 QWindow::focusOutEvent(event
);
97 void MozQWidget::hideEvent(QHideEvent
* event
)
99 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
100 mReceiver
->hideEvent(event
);
101 QWindow::hideEvent(event
);
104 void MozQWidget::keyPressEvent(QKeyEvent
* event
)
106 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
107 mReceiver
->keyPressEvent(event
);
108 QWindow::keyPressEvent(event
);
111 void MozQWidget::keyReleaseEvent(QKeyEvent
* event
)
113 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
114 mReceiver
->keyReleaseEvent(event
);
115 QWindow::keyReleaseEvent(event
);
118 void MozQWidget::mouseDoubleClickEvent(QMouseEvent
* event
)
120 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
121 mReceiver
->mouseDoubleClickEvent(event
);
122 QWindow::mouseDoubleClickEvent(event
);
125 void MozQWidget::mouseMoveEvent(QMouseEvent
* event
)
127 mReceiver
->mouseMoveEvent(event
);
128 QWindow::mouseMoveEvent(event
);
131 void MozQWidget::mousePressEvent(QMouseEvent
* event
)
133 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
134 mReceiver
->mousePressEvent(event
);
135 QWindow::mousePressEvent(event
);
138 void MozQWidget::mouseReleaseEvent(QMouseEvent
* event
)
140 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
141 mReceiver
->mouseReleaseEvent(event
);
142 QWindow::mouseReleaseEvent(event
);
145 void MozQWidget::moveEvent(QMoveEvent
* event
)
147 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
148 mReceiver
->moveEvent(event
);
149 QWindow::moveEvent(event
);
152 void MozQWidget::showEvent(QShowEvent
* event
)
154 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
155 mReceiver
->showEvent(event
);
156 QWindow::showEvent(event
);
159 void MozQWidget::wheelEvent(QWheelEvent
* event
)
161 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
162 mReceiver
->wheelEvent(event
);
163 QWindow::wheelEvent(event
);
166 void MozQWidget::tabletEvent(QTabletEvent
* event
)
168 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
169 QWindow::tabletEvent(event
);
172 void MozQWidget::touchEvent(QTouchEvent
* event
)
174 LOG(("MozQWidget::%s [%p]\n", __FUNCTION__
, (void *)this));
175 QWindow::touchEvent(event
);
178 void MozQWidget::SetCursor(nsCursor aCursor
)
180 Qt::CursorShape cursor
= Qt::ArrowCursor
;
182 case eCursor_standard
:
183 cursor
= Qt::ArrowCursor
;
186 cursor
= Qt::WaitCursor
;
189 cursor
= Qt::IBeamCursor
;
191 case eCursor_hyperlink
:
192 cursor
= Qt::PointingHandCursor
;
194 case eCursor_ew_resize
:
195 cursor
= Qt::SplitHCursor
;
197 case eCursor_ns_resize
:
198 cursor
= Qt::SplitVCursor
;
200 case eCursor_nw_resize
:
201 case eCursor_se_resize
:
202 cursor
= Qt::SizeBDiagCursor
;
204 case eCursor_ne_resize
:
205 case eCursor_sw_resize
:
206 cursor
= Qt::SizeFDiagCursor
;
208 case eCursor_crosshair
:
210 cursor
= Qt::SizeAllCursor
;
213 cursor
= Qt::WhatsThisCursor
;
218 case eCursor_context_menu
:
221 case eCursor_grabbing
:
222 case eCursor_spinning
:
223 case eCursor_zoom_in
:
224 case eCursor_zoom_out
: