#include <QMimeData>
#include <QUrl>
#include <QDragEnterEvent>
-#include <QPixmap>
#include <QPainter>
#include <QScrollBar>
// On windows-XP the UserGuide PageDown scroll test is faster without event pruning (16 s)
// than with it (23 s).
#ifdef Q_WS_WIN
+int const CursorWidth = 2;
#define USE_EVENT_PRUNING 0
#else
+int const CursorWidth = 1;
#define USE_EVENT_PRUNING 0
#endif
CursorWidget(QWidget * parent)
: QWidget(parent)
{
- resize(2, 20);
+ resize(CursorWidth, 20);
}
void paintEvent(QPaintEvent *)
}
*/
}
- /// shown?
- bool on_;
///
CursorShape shape_;
+ ///
+ bool show_hcursor_;
+ ///
+ bool show_vcursor_;
+ ///
+ bool lshape_cursor_;
+ ///
+ QColor cursor_color_;
};
void GuiWorkArea::resizeEvent(QResizeEvent * ev)
{
cursor_->hide();
+ screen_ = QPixmap(ev->size().width(), ev->size().height());
verticalScrollBar()->setPageStep(viewport()->height());
QAbstractScrollArea::resizeEvent(ev);
resizeBufferView();
void GuiWorkArea::paintEvent(QPaintEvent * ev)
{
- /*
- lyxerr[Debug::GUI] << BOOST_CURRENT_FUNCTION
- << "\n QWidget width\t" << this->width()
- << "\n QWidget height\t" << this->height()
- << "\n viewport width\t" << viewport()->width()
- << "\n viewport height\t" << viewport()->height()
- << "\n QPaintEvent x\t" << e->rect().x()
- << "\n QPaintEvent y\t" << e->rect().y()
- << "\n QPaintEvent w\t" << e->rect().width()
- << "\n QPaintEvent h\t" << e->rect().height()
- << endl;
- */
-
QRect const rc = ev->rect();
- //lyxerr << "paintEvent begin: x: " << rc.x()
- // << " y: " << rc.y()
- // << " w: " << rc.width()
- // << " h: " << rc.height() << endl;
+ lyxerr[Debug::PAINTING] << "paintEvent begin: x: " << rc.x()
+ << " y: " << rc.y()
+ << " w: " << rc.width()
+ << " h: " << rc.height() << endl;
+
+ QPainter pain(viewport());
+ pain.drawPixmap(rc, screen_, rc);
+}
- if (!buffer_view_) {
- lyxerr << "no bufferview" << endl;
- return;
- }
- QLPainter pain(viewport());
- if (rc.width() == 3) { // FIXME HACK
+void GuiWorkArea::expose(int x, int y, int w, int h)
+{
+ QLPainter pain(&screen_);
+
+ if (w == 3) { // FIXME HACK
// Assume splash screen drawing is requested when
// width == 3
lyxerr << "splash screen requested" << endl;
doGreyOut(pain);
- return;
}
-
- if (!buffer_view_->buffer()) {
+ else if (!buffer_view_->buffer()) {
lyxerr << "no buffer: " << endl;
doGreyOut(pain);
updateScrollbar();
- return;
+ }
+ else {
+ paintText(*buffer_view_, pain);
}
- //lyxerr << "real drawing" << endl;
- paintText(*buffer_view_, pain);
-}
-
-
-
-void GuiWorkArea::expose(int x, int y, int w, int h)
-{
update(x, y, w, h);
}
void GuiWorkArea::showCursor(int x, int y, int h, CursorShape shape)
{
- cursor_->setGeometry(x, y, 2, h);
+ cursor_->setGeometry(x, y, CursorWidth, h);
cursor_->shape_ = shape;
- cursor_->on_ = true;
cursor_->show();
}