3 * Copyright 1995-2002 the LyX Team
4 * Read the file COPYING
6 * \author John Levon <moz@compsoc.man.ac.uk>
12 #pragma implementation
17 #include "QWorkArea.h"
18 #include "QLyXKeySym.h"
27 /// return the LyX key state from Qt's
28 key_modifier::state q_key_state(Qt::ButtonState state)
30 key_modifier::state k = key_modifier::none;
31 if (state & Qt::ControlButton)
32 k |= key_modifier::ctrl;
33 if (state & Qt::ShiftButton)
34 k |= key_modifier::shift;
35 if (state & Qt::AltButton)
36 k |= key_modifier::alt;
40 /// return the LyX mouse button state from Qt's
41 mouse_button::state q_button_state(Qt::ButtonState button)
43 mouse_button::state b = mouse_button::none;
46 b = mouse_button::button1;
49 b = mouse_button::button2;
52 b = mouse_button::button3;
61 /// return the LyX mouse button state from Qt's
62 mouse_button::state q_motion_state(Qt::ButtonState state)
64 mouse_button::state b = mouse_button::none;
65 if (state & Qt::LeftButton)
66 b |= mouse_button::button1;
67 if (state & Qt::MidButton)
68 b |= mouse_button::button2;
69 if (state & Qt::RightButton)
70 b |= mouse_button::button3;
77 QContentPane::QContentPane(QWorkArea * parent)
78 : QWidget(parent, "content_pane", WRepaintNoErase),
81 setFocusPolicy(QWidget::WheelFocus);
84 // stupid moc strikes again
85 connect(wa_->scrollbar_, SIGNAL(valueChanged(int)),
86 this, SLOT(scrollBarChanged(int)));
91 void QContentPane::scrollBarChanged(int val)
93 wa_->scrollDocView(val);
97 void QContentPane::mousePressEvent(QMouseEvent * e)
99 wa_->workAreaButtonPress(e->x(), e->y(), q_button_state(e->button()));
103 void QContentPane::mouseReleaseEvent(QMouseEvent * e)
105 wa_->workAreaButtonRelease(e->x(), e->y(), q_button_state(e->button()));
109 void QContentPane::mouseMoveEvent(QMouseEvent * e)
111 wa_->workAreaMotionNotify(e->x(), e->y(), q_motion_state(e->state()));
115 void QContentPane::keyPressEvent(QKeyEvent * e)
117 lyxerr[Debug::KEY] << "Press key " << e->key()
118 << " text \"" << (e->text().isEmpty() ? "none" : e->text().latin1())
119 << "\", ascii \"" << e->ascii() << "\"" << endl;
120 QLyXKeySym * sym = new QLyXKeySym();
122 wa_->workAreaKeyPress(LyXKeySymPtr(sym), q_key_state(e->state()));
126 void QContentPane::mouseDoubleClickEvent(QMouseEvent * e)
128 wa_->workAreaDoubleClick(e->x(), e->y(), q_button_state(e->state()));
129 // FIXME: triple click
133 void QContentPane::resizeEvent(QResizeEvent *)
135 if (!pixmap_.get()) {
136 pixmap_.reset(new QPixmap(width(), height()));
139 pixmap_->resize(width(), height());
140 wa_->workAreaResize();
144 void QContentPane::paintEvent(QPaintEvent * e)
146 if (!pixmap_.get()) {
147 pixmap_.reset(new QPixmap(width(), height()));
148 wa_->workAreaResize();
154 lyxerr[Debug::GUI] << "repainting " << r.x()
155 << "," << r.y() << " " << r.width()
156 << "," << r.height() << endl;
158 q.drawPixmap(QPoint(r.x(), r.y()),