]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiWorkArea.C
comment out debug statement.
[lyx.git] / src / frontends / qt4 / GuiWorkArea.C
index 7c9bca4d800d0988e16bcb8319c138c6d3f6fdda..1cd967474168e7963d768b32e3cfbe8dd41dc84b 100644 (file)
@@ -31,6 +31,7 @@
 
 #include "support/filetools.h" // LibFileSearch
 #include "support/os.h"
+#include "support/convert.h"
 
 #include "graphics/GraphicsImage.h"
 #include "graphics/GraphicsLoader.h"
 #include <boost/bind.hpp>
 #include <boost/current_function.hpp>
 
-// Abdel (26/06/2006):
-// 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
 
 
@@ -66,6 +62,8 @@ namespace os = lyx::support::os;
 
 namespace lyx {
 
+using support::FileName;
+
 /// return the LyX key state from Qt's
 static key_modifier::state q_key_state(Qt::KeyboardModifiers state)
 {
@@ -169,10 +167,14 @@ GuiWorkArea::GuiWorkArea(int w, int h, int id, LyXView & lyx_view)
        setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
        setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
        setAcceptDrops(true);
+       setMouseTracking(true);
        setMinimumSize(100, 70);
 
        viewport()->setAutoFillBackground(false);
-       viewport()->setAttribute(Qt::WA_OpaquePaintEvent);
+       // We don't need double-buffering nor SystemBackground on
+       // the viewport because we have our own backing pixmap.
+       viewport()->setAttribute(Qt::WA_NoSystemBackground);
+
        setFocusPolicy(Qt::WheelFocus);
 
        viewport()->setCursor(Qt::IBeamCursor);
@@ -197,20 +199,6 @@ GuiWorkArea::GuiWorkArea(int w, int h, int id, LyXView & lyx_view)
                << "\n viewport height\t" << viewport()->height()
                << endl;
 
-       if (USE_EVENT_PRUNING) {
-               // This is the keyboard buffering stuff...
-               // I don't see any need for this under windows. The keyboard is reactive
-               // enough...
-
-               if ( !QObject::connect(&step_timer_, SIGNAL(timeout()),
-                       this, SLOT(keyeventTimeout())) )
-                       lyxerr[Debug::GUI] << "ERROR: keyeventTimeout cannot connect!" << endl;
-
-               // Start the timer, one-shot.
-               step_timer_.setSingleShot(true);
-               step_timer_.start(50);
-       }
-
        // Enables input methods for asian languages.
        // Must be set when creating custom text editing widgets.
        setAttribute(Qt::WA_InputMethodEnabled, true);
@@ -271,41 +259,21 @@ void GuiWorkArea::dropEvent(QDropEvent* event)
 void GuiWorkArea::focusInEvent(QFocusEvent * /*event*/)
 {
        // No need to do anything if we didn't change views...
-       if (theApp == 0 || &lyx_view_ == &theApp->currentView())
-               return;
+//     if (theApp() == 0 || &lyx_view_ == theApp()->currentView())
+//             return;
 
-       theApp->setCurrentView(lyx_view_);
+       theApp()->setCurrentView(lyx_view_);
 
        // FIXME: it would be better to send a signal "newBuffer()"
        // in BufferList that could be connected to the different tabbars.
        lyx_view_.updateTab();
 
        startBlinkingCursor();
-
-       //FIXME: Use case: Two windows share the same buffer.
-       // The first window is resize. This modify the inner Buffer
-       // structure because Paragraph has a notion of line break and
-       // thus line width (this is very bad!).
-       // When switching to the other window which does not have the
-       // same size, LyX crashes because the line break is not adapted
-       // the this BufferView width.
-       // The following line fix the crash by resizing the BufferView 
-       // on a focusInEvent(). That is not a good fix but it is a fix
-       // nevertheless. The bad side effect is that when the two
-       // BufferViews show the same portion of the Buffer, the second 
-       // BufferView will show the same line breaks as the first one;
-       // even though those line breaks are not adapted to the second
-       // BufferView width... such is life!
-       resizeBufferView();
 }
 
 
 void GuiWorkArea::focusOutEvent(QFocusEvent * /*event*/)
 {
-       // No need to do anything if we didn't change views...
-       if (&lyx_view_ == &theApp->currentView())
-               return;
-
        stopBlinkingCursor();
 }
 
@@ -438,51 +406,9 @@ void GuiWorkArea::keyPressEvent(QKeyEvent * e)
                << " key=" << e->key()
                << endl;
 
-       if (USE_EVENT_PRUNING) {
-               keyeventQueue_.push(boost::shared_ptr<QKeyEvent>(new QKeyEvent(*e)));
-       }
-       else {
-               boost::shared_ptr<QLyXKeySym> sym(new QLyXKeySym);
-               sym->set(e);
-               processKeySym(sym, q_key_state(e->modifiers()));
-       }
-}
-
-
-// This is used only if USE_EVENT_PRUNING is defined...
-void GuiWorkArea::keyeventTimeout()
-{
-       bool handle_autos = true;
-
-       while (!keyeventQueue_.empty()) {
-               boost::shared_ptr<QKeyEvent> ev = keyeventQueue_.front();
-
-               // We never handle more than one auto repeated
-               // char in a list of queued up events.
-               if (!handle_autos && ev->isAutoRepeat()) {
-                       keyeventQueue_.pop();
-                       continue;
-               }
-
-               boost::shared_ptr<QLyXKeySym> sym(new QLyXKeySym);
-               sym->set(ev.get());
-
-               lyxerr[Debug::GUI] << BOOST_CURRENT_FUNCTION
-                                  << " count=" << ev->count()
-                                  << " text=" <<  fromqstr(ev->text())
-                                  << " isAutoRepeat=" << ev->isAutoRepeat()
-                                  << " key=" << ev->key()
-                                  << endl;
-
-               processKeySym(sym, q_key_state(ev->modifiers()));
-               keyeventQueue_.pop();
-
-               handle_autos = false;
-       }
-
-       // Restart the timer.
-       step_timer_.setSingleShot(true);
-       step_timer_.start(25);
+       boost::shared_ptr<QLyXKeySym> sym(new QLyXKeySym);
+       sym->set(e);
+       processKeySym(sym, q_key_state(e->modifiers()));
 }
 
 
@@ -515,7 +441,7 @@ void GuiWorkArea::resizeEvent(QResizeEvent * ev)
 
 void GuiWorkArea::update(int x, int y, int w, int h)
 {
-       viewport()->update(x, y, w, h);
+       viewport()->repaint(x, y, w, h);
 }
 
 
@@ -531,11 +457,11 @@ void GuiWorkArea::doGreyOut(QLPainter & pain)
        lyxerr[Debug::GUI] << "show banner: " << lyxrc.show_banner << endl;
        /// The text to be written on top of the pixmap
        QString const text = lyx_version ? QString(lyx_version) : qt_("unknown version");
-       string const file = support::libFileSearch("images", "banner", "ppm");
+       FileName const file = support::libFileSearch("images", "banner", "ppm");
        if (file.empty())
                return;
 
-       QPixmap pm(toqstr(file));
+       QPixmap pm(toqstr(file.absFilename()));
        if (!pm) {
                lyxerr << "could not load splash screen: '" << file << "'" << endl;
                return;
@@ -545,7 +471,7 @@ void GuiWorkArea::doGreyOut(QLPainter & pain)
        // The font used to display the version info
        font.setStyleHint(QFont::SansSerif);
        font.setWeight(QFont::Bold);
-       font.setPointSize(LyXFont::SIZE_NORMAL);
+       font.setPointSize(convert<int>(lyxrc.font_sizes[LyXFont::SIZE_LARGE]));
 
        int const w = pm.width();
        int const h = pm.height();
@@ -555,7 +481,7 @@ void GuiWorkArea::doGreyOut(QLPainter & pain)
 
        pain.drawPixmap(x, y, pm);
 
-       x += 260;
+       x += 300;
        y += 265;
 
        pain.setPen(QColor(255, 255, 0));
@@ -567,10 +493,12 @@ void GuiWorkArea::doGreyOut(QLPainter & pain)
 void GuiWorkArea::paintEvent(QPaintEvent * ev)
 {
        QRect const rc = ev->rect(); 
+       /*
        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);