mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +00:00
Introduce new RC option for QImage backend instead of macro. This can later be changed at runtime though a command line option or by auto detecting the X11 remote status.
This option is set to true by default as this is the most widespread use case. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40515 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
38f1106255
commit
c5c0c22f6b
@ -199,6 +199,7 @@ LexerKeyword lyxrcTags[] = {
|
||||
{ "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
|
||||
{ "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
|
||||
{ "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
|
||||
{ "\\use_qimage", LyXRC::RC_USE_QIMAGE },
|
||||
// compatibility with versions older than 1.4.0 only
|
||||
{ "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
|
||||
{ "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
|
||||
@ -337,6 +338,7 @@ void LyXRC::setDefaults()
|
||||
use_system_colors = false;
|
||||
use_tooltip = true;
|
||||
use_pixmap_cache = false;
|
||||
use_qimage = true;
|
||||
converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
|
||||
user_name = to_utf8(support::user_name());
|
||||
user_email = to_utf8(support::user_email());
|
||||
@ -951,6 +953,9 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
|
||||
case RC_USE_PIXMAP_CACHE:
|
||||
lexrc >> use_pixmap_cache;
|
||||
break;
|
||||
case RC_USE_QIMAGE:
|
||||
lexrc >> use_qimage;
|
||||
break;
|
||||
case RC_SPELLCHECKER:
|
||||
lexrc >> spellchecker;
|
||||
break;
|
||||
@ -2439,6 +2444,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
|
||||
}
|
||||
if (tag != RC_LAST)
|
||||
break;
|
||||
case RC_USE_QIMAGE:
|
||||
if (ignore_system_lyxrc ||
|
||||
use_qimage != system_lyxrc.use_qimage) {
|
||||
os << "\\use_qimage "
|
||||
<< convert<string>(use_qimage)
|
||||
<< '\n';
|
||||
}
|
||||
if (tag != RC_LAST)
|
||||
break;
|
||||
|
||||
os << "\n#\n"
|
||||
<< "# LANGUAGE SUPPORT SECTION ##########################\n"
|
||||
@ -2993,6 +3007,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
|
||||
case LyXRC::RC_USE_SYSTEM_COLORS:
|
||||
case LyXRC::RC_USE_TOOLTIP:
|
||||
case LyXRC::RC_USE_PIXMAP_CACHE:
|
||||
case LyXRC::RC_USE_QIMAGE:
|
||||
case LyXRC::RC_VIEWDVI_PAPEROPTION:
|
||||
case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
|
||||
case LyXRC::RC_SINGLE_INSTANCE:
|
||||
|
@ -185,6 +185,7 @@ public:
|
||||
RC_USE_SYSTEM_COLORS,
|
||||
RC_USE_TOOLTIP,
|
||||
RC_USE_PIXMAP_CACHE,
|
||||
RC_USE_QIMAGE,
|
||||
RC_VIEWDVI_PAPEROPTION,
|
||||
RC_VIEWER,
|
||||
RC_VIEWER_ALTERNATIVES,
|
||||
@ -361,6 +362,8 @@ public:
|
||||
bool use_system_colors;
|
||||
/// Use pixmap cache?
|
||||
bool use_pixmap_cache;
|
||||
/// Use QImage backend?
|
||||
bool use_qimage;
|
||||
/// Spellchecker engine: aspell, hunspell, etc
|
||||
std::string spellchecker;
|
||||
/// Alternate language for spellchecker
|
||||
|
@ -237,7 +237,7 @@ SyntheticMouseEvent::SyntheticMouseEvent()
|
||||
|
||||
|
||||
GuiWorkArea::Private::Private(GuiWorkArea * parent)
|
||||
: p(parent), buffer_view_(0), lyx_view_(0), cursor_visible_(false),
|
||||
: p(parent), screen_(0), buffer_view_(0), lyx_view_(0), cursor_visible_(false),
|
||||
need_resize_(false), schedule_redraw_(false), preedit_lines_(1),
|
||||
completer_(new GuiCompleter(p, p))
|
||||
{
|
||||
@ -319,6 +319,7 @@ void GuiWorkArea::init()
|
||||
GuiWorkArea::~GuiWorkArea()
|
||||
{
|
||||
d->buffer_view_->buffer().workAreaManager().remove(this);
|
||||
delete d->screen_;
|
||||
delete d->buffer_view_;
|
||||
delete d->cursor_;
|
||||
// Completer has a QObject parent and is thus automatically destroyed.
|
||||
@ -1120,11 +1121,11 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
|
||||
}
|
||||
|
||||
QPainter pain(viewport());
|
||||
#ifdef USE_QIMAGE
|
||||
pain.drawImage(rc, d->screen_, rc);
|
||||
#else
|
||||
pain.drawPixmap(rc, d->screen_, rc);
|
||||
#endif
|
||||
if (lyxrc.use_qimage) {
|
||||
pain.drawImage(rc, static_cast<QImage const &>(*d->screen_), rc);
|
||||
} else {
|
||||
pain.drawPixmap(rc, static_cast<QPixmap const &>(*d->screen_), rc);
|
||||
}
|
||||
d->cursor_->draw(pain);
|
||||
ev->accept();
|
||||
}
|
||||
@ -1132,7 +1133,7 @@ void GuiWorkArea::paintEvent(QPaintEvent * ev)
|
||||
|
||||
void GuiWorkArea::Private::updateScreen()
|
||||
{
|
||||
GuiPainter pain(&screen_);
|
||||
GuiPainter pain(screen_);
|
||||
buffer_view_->draw(pain);
|
||||
}
|
||||
|
||||
@ -1204,7 +1205,7 @@ void GuiWorkArea::inputMethodEvent(QInputMethodEvent * e)
|
||||
return;
|
||||
}
|
||||
|
||||
GuiPainter pain(&d->screen_);
|
||||
GuiPainter pain(d->screen_);
|
||||
d->buffer_view_->updateMetrics();
|
||||
d->buffer_view_->draw(pain);
|
||||
FontInfo font = d->buffer_view_->cursor().getFont().fontInfo();
|
||||
|
@ -12,24 +12,17 @@
|
||||
#ifndef WORKAREA_PRIVATE_H
|
||||
#define WORKAREA_PRIVATE_H
|
||||
|
||||
// Comment out to use QImage backend instead of QPixmap. This won't have any
|
||||
// effect on Windows, MacOSX and most X11 environment when running locally.
|
||||
// When running remotely on X11, this may have a big performance penalty.
|
||||
//#define USE_QIMAGE
|
||||
|
||||
#include "FuncRequest.h"
|
||||
#include "qt_helpers.h"
|
||||
#include "LyXRC.h"
|
||||
|
||||
#include "support/docstring.h"
|
||||
#include "support/Timeout.h"
|
||||
|
||||
#include <QAbstractScrollArea>
|
||||
#include <QMouseEvent>
|
||||
#ifdef USE_QIMAGE
|
||||
#include <QImage>
|
||||
#else
|
||||
#include <QPixmap>
|
||||
#endif
|
||||
#include <QTimer>
|
||||
|
||||
class QContextMenuEvent;
|
||||
@ -109,11 +102,11 @@ struct GuiWorkArea::Private
|
||||
void resizeBufferView();
|
||||
|
||||
/// paint the cursor and store the background
|
||||
virtual void showCursor(int x, int y, int h,
|
||||
void showCursor(int x, int y, int h,
|
||||
bool l_shape, bool rtl, bool completable);
|
||||
|
||||
/// hide the cursor
|
||||
virtual void removeCursor();
|
||||
void removeCursor();
|
||||
///
|
||||
void dispatch(FuncRequest const & cmd0, KeyModifier = NoModifier);
|
||||
/// hide the visible cursor, if it is visible
|
||||
@ -127,25 +120,20 @@ struct GuiWorkArea::Private
|
||||
///
|
||||
void setCursorShape(Qt::CursorShape shape);
|
||||
|
||||
#ifdef USE_QIMAGE
|
||||
void resetScreen()
|
||||
{
|
||||
screen_ = QImage(p->viewport()->width(), p->viewport()->height(),
|
||||
delete screen_;
|
||||
if (lyxrc.use_qimage) {
|
||||
screen_ = new QImage(p->viewport()->width(), p->viewport()->height(),
|
||||
QImage::Format_ARGB32_Premultiplied);
|
||||
} else {
|
||||
screen_ = new QPixmap(p->viewport()->width(), p->viewport()->height());
|
||||
}
|
||||
|
||||
QImage screen_;
|
||||
#else
|
||||
void resetScreen()
|
||||
{
|
||||
screen_ = QPixmap(p->viewport()->width(), p->viewport()->height());
|
||||
}
|
||||
|
||||
QPixmap screen_;
|
||||
#endif
|
||||
///
|
||||
GuiWorkArea * p;
|
||||
|
||||
///
|
||||
QPaintDevice * screen_;
|
||||
///
|
||||
BufferView * buffer_view_;
|
||||
/// Read only Buffer status cache.
|
||||
|
Loading…
Reference in New Issue
Block a user