#undef None
#elif defined(QPA_XCB)
#include <xcb/xcb.h>
-#include <X11/Xatom.h>
-#include <X11/Intrinsic.h>
-#undef None
#endif
#if (QT_VERSION < 0x050000) || (QT_VERSION >= 0x050400)
return QString();
}
+
+bool getPixmap(QPixmap & pixmap, QString const & path)
+{
+ if (pixmap.load(path)) {
+#if QT_VERSION >= 0x050000
+ if (path.endsWith(".svgz") || path.endsWith(".svg") ) {
+ GuiApplication const * guiApp = theGuiApp();
+ if (guiApp != 0) {
+ pixmap.setDevicePixelRatio(guiApp->pixelRatio());
+ }
+ }
+#endif
+ return true;
+ }
+ return false;
+}
+
+
QPixmap getPixmap(QString const & path, QString const & name, QString const & ext)
{
- QPixmap pixmap;
QString imagedir = path;
FileName fname = imageLibFileSearch(imagedir, name, ext, theGuiApp()->imageSearchMode());
QString fpath = toqstr(fname.absFileName());
+ QPixmap pixmap = QPixmap();
- if (pixmap.load(fpath)) {
+ if (getPixmap(pixmap, fpath)) {
return pixmap;
- } else {
- QStringList exts = ext.split(",");
- fpath = ":/" + path + name + ".";
- for (int i = 0; i < exts.size(); ++i) {
- if (pixmap.load(fpath + exts.at(i)))
+ }
+
+ QStringList exts = ext.split(",");
+ fpath = ":/" + path + name + ".";
+ for (int i = 0; i < exts.size(); ++i) {
+ if (getPixmap(pixmap, fpath + exts.at(i))) {
return pixmap;
- }
+ }
}
bool const list = ext.contains(",");
return QPixmap();
}
+
QIcon getIcon(FuncRequest const & f, bool unknown)
{
#if (QT_VERSION >= 0x040600)
return QIcon();
//LYXERR(Debug::GUI, "Found icon: " << icon);
- QPixmap pm;
- if (!pm.load(icon)) {
+ QPixmap pixmap = QPixmap();
+ if (!getPixmap(pixmap,icon)) {
LYXERR0("Cannot load icon " << icon << " please verify resource system!");
return QIcon();
}
- return QIcon(pm);
+ return QIcon(pixmap);
}
///
KeyModifier meta_fake_bit;
+ /// The result of last dispatch action
+ DispatchResult dispatch_result_;
+
/// Multiple views container.
/**
* Warning: This must not be a smart pointer as the destruction of the
}
-void GuiApplication::dispatch(FuncRequest const & cmd)
+DispatchResult const & GuiApplication::dispatch(FuncRequest const & cmd)
{
Buffer * buffer = 0;
if (current_view_ && current_view_->currentBufferView()) {
// the buffer may have been closed by one action
if (theBufferList().isLoaded(buffer))
buffer->undo().endUndoGroup();
+
+ d->dispatch_result_ = dr;
+ return d->dispatch_result_;
}
}
// Make sure we don't keep old colors in cache.
d->color_cache_.clear();
+ // Update the current view
+ lyx::dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
break;
}
#ifdef Q_OS_MAC
#if QT_VERSION > 0x040600
setAttribute(Qt::AA_MacDontSwapCtrlAndMeta,lyxrc.mac_dontswap_ctrl_meta);
+#endif
+#if QT_VERSION > 0x050100
+ setAttribute(Qt::AA_UseHighDpiPixmaps,true);
#endif
// Create the global default menubar which is shown for the dialogs
// and if no GuiView is visible.
void GuiApplication::unregisterView(GuiView * gv)
{
- LAPPERR(d->views_[gv->id()] == gv);
- d->views_.remove(gv->id());
- if (current_view_ == gv)
- current_view_ = 0;
+ if(d->views_.contains(gv->id()) && d->views_.value(gv->id()) == gv) {
+ d->views_.remove(gv->id());
+ if (current_view_ == gv)
+ current_view_ = 0;
+ }
}
}
#elif defined(QPA_XCB)
bool GuiApplication::nativeEventFilter(const QByteArray & eventType,
- void * message, long *) Q_DECL_OVERRIDE
+ void * message, long *)
{
if (!current_view_ || eventType != "xcb_generic_event_t")
return false;
case XCB_SELECTION_REQUEST: {
xcb_selection_request_event_t * srev =
reinterpret_cast<xcb_selection_request_event_t *>(ev);
- if (srev->selection != XA_PRIMARY)
+ if (srev->selection != XCB_ATOM_PRIMARY)
break;
LYXERR(Debug::SELECTION, "X requested selection.");
BufferView * bv = current_view_->currentBufferView();
case XCB_SELECTION_CLEAR: {
xcb_selection_clear_event_t * scev =
reinterpret_cast<xcb_selection_clear_event_t *>(ev);
- if (scev->selection != XA_PRIMARY)
+ if (scev->selection != XCB_ATOM_PRIMARY)
break;
LYXERR(Debug::SELECTION, "Lost selection.");
BufferView * bv = current_view_->currentBufferView();