]> git.lyx.org Git - lyx.git/commitdiff
Add UI for selecting backing store drawing strategy
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 17 Dec 2021 10:12:54 +0000 (11:12 +0100)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 17 Dec 2021 14:16:35 +0000 (15:16 +0100)
The checkbox is hidden when backing store is enforced (wayland,
macOS). In practice, only X11 and Windows users will see it ; I only
have evidence of X11 people needing it, I can hide it for Windows
users too if necessary.

Fixes bug #12119.

src/frontends/qt/GuiPrefs.cpp
src/frontends/qt/ui/PrefDisplayUi.ui

index c1be9b80b2cdba7bf3458ce61073e72d1cf3fd49..75deb7c3813d8059c9daa89391530421219b62a7 100644 (file)
@@ -1324,6 +1324,7 @@ PrefDisplay::PrefDisplay(GuiPreferences * form)
        connect(previewSizeSB, SIGNAL(valueChanged(double)), this, SIGNAL(changed()));
        connect(paragraphMarkerCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
        connect(ctAdditionsUnderlinedCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
+       connect(ctUseBackingstoreCB, SIGNAL(toggled(bool)), this, SIGNAL(changed()));
 }
 
 
@@ -1351,6 +1352,8 @@ void PrefDisplay::applyRC(LyXRC & rc) const
        rc.preview_scale_factor = previewSizeSB->value();
        rc.paragraph_markers = paragraphMarkerCB->isChecked();
        rc.ct_additions_underlined = ctAdditionsUnderlinedCB->isChecked();
+       rc.draw_strategy = ctUseBackingstoreCB->isChecked()
+               ? LyXRC::DS_BACKINGSTORE : LyXRC::DS_PARTIAL;
 
        // FIXME!! The graphics cache no longer has a changeDisplay method.
 #if 0
@@ -1380,6 +1383,8 @@ void PrefDisplay::updateRC(LyXRC const & rc)
        previewSizeSB->setValue(rc.preview_scale_factor);
        paragraphMarkerCB->setChecked(rc.paragraph_markers);
        ctAdditionsUnderlinedCB->setChecked(rc.ct_additions_underlined);
+       ctUseBackingstoreCB->setChecked(rc.draw_strategy == LyXRC::DS_BACKINGSTORE);
+       ctUseBackingstoreCB->setHidden(guiApp->needsBackingStore());
        previewSizeSB->setEnabled(
                rc.display_graphics
                && rc.preview != LyXRC::PREVIEW_OFF);
index d8a79eb7db39582bc74ff876c47a3d239cfb5972..9c09b459b9d5d1855a17aad3469b29dc95063c0d 100644 (file)
@@ -83,7 +83,7 @@
      </property>
     </spacer>
    </item>
-   <item row="4" column="0">
+   <item row="5" column="0">
     <spacer>
      <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
     </widget>
    </item>
+   <item row="4" column="0" colspan="2">
+    <widget class="QCheckBox" name="ctUseBackingstoreCB">
+     <property name="toolTip">
+      <string>If this is checked, an intermediate surface will be used for painting. This may be needed in some cases to have proper display, but breaks subpixel aliasing.</string>
+     </property>
+     <property name="text">
+      <string>Use &amp;backing store to display text</string>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
  <tabstops>