* Edit > Paste operation now preserves newlines in text by default.
+* Dark mode on Windows is possible now by choosing "fusion" user interface style
+ in the user interface preferences dialog, your system style has to be set to dark.
+
!!Documents compilation process and images conversion
lyx_check_config = True
lyx_kpsewhich = True
outfile = 'lyxrc.defaults'
- lyxrc_fileformat = 37
+ lyxrc_fileformat = 38
rc_entries = ''
lyx_keep_temps = False
version_suffix = ''
#LyX 2.4 created this file. For more info see https://www.lyx.org/
-\lyxformat 618
+\lyxformat 620
\begin_document
\begin_header
\save_transient_properties true
\author 5863208 "ab"
\author 5863344 "Enrico Forestieri"
\author 244031559 "Yuriy"
+\author 258250489 "eugen"
\author 274215730 "scott"
\author 630872221 "Jean-Pierre Chrétien" jeanpierre.chretien@free.fr
\author 1064312605 "Udi Fogiel"
\end_inset
.
+\change_inserted 258250489 1697053558
+
+\end_layout
+
+\begin_layout Standard
+
+\change_inserted 258250489 1697054388
+
+\family sans
+User
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+style
+\family default
+ allows you to change the look and feel of \SpecialChar LyX
+'s user interface control elements.
+ There may be different choices available on different operating systems.
+ On certain operating systems some styles may support dark mode while others don't.
+ In order to use dark mode in \SpecialChar LyX
+ you may first need to enable it in your system's settings.
+\change_unchanged
+
\end_layout
\begin_layout Subsubsection
# Add \screen_width
# Add \screen_limit
+# Incremented to format 38, by ec
+# Add option to configure ui style
+# No conversion necessary.
+
# NOTE: The format should also be updated in LYXRC.cpp and
# in configure.py (search for lyxrc_fileformat).
[ 34, [rename_cyrillic_kmap_files]],
[ 35, [add_dark_color]],
[ 36, [add_spellcheck_default]],
- [ 37, [remove_fullscreen_widthlimit]]
+ [ 37, [remove_fullscreen_widthlimit]],
+ [ 38, []]
]
// This one is edited through the preferences dialog.
if (!readRcFile("preferences", true))
return false;
+ pimpl_->application_->applyPrefs();
// The language may have been set to someting useful through prefs
setLocale();
// The format should also be updated in configure.py, and conversion code
// should be added to prefs2prefs_prefs.py.
-static unsigned int const LYXRC_FILEFORMAT = 37; // chillenb: screen_width and screen_limit
+static unsigned int const LYXRC_FILEFORMAT = 38; // chillenb: screen_width and screen_limit
// when adding something to this array keep it sorted!
LexerKeyword lyxrcTags[] = {
{ "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
{ "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
{ "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
{ "\\ui_file", LyXRC::RC_UIFILE },
+ { "\\ui_style", LyXRC::RC_UI_STYLE },
{ "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
{ "\\use_converter_needauth", LyXRC::RC_USE_CONVERTER_NEEDAUTH },
{ "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN },
lexrc >> icon_set;
break;
+ case RC_UI_STYLE:
+ lexrc >> ui_style;
+ break;
+
case RC_USE_SYSTEM_THEME_ICONS:
lexrc >> use_system_theme_icons;
break;
if (tag != RC_LAST)
break;
// fall through
+ case RC_UI_STYLE:
+ if (ignore_system_lyxrc ||
+ ui_style != system_lyxrc.ui_style) {
+ os << "\\ui_style \"" << ui_style
+ << "\"\n";
+ }
+ if (tag != RC_LAST)
+ break;
+ // fall through
case RC_USE_SYSTEM_THEME_ICONS:
if (ignore_system_lyxrc ||
use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
case LyXRC::RC_GROUP_LAYOUTS:
case LyXRC::RC_HUNSPELLDIR_PATH:
case LyXRC::RC_ICON_SET:
+ case LyXRC::RC_UI_STYLE:
case LyXRC::RC_INDEX_ALTERNATIVES:
case LyXRC::RC_INDEX_COMMAND:
case LyXRC::RC_JBIBTEX_COMMAND:
RC_TEXINPUTS_PREFIX,
RC_THESAURUSDIRPATH,
RC_UIFILE,
+ RC_UI_STYLE,
RC_USELASTFILEPOS,
RC_USER_EMAIL,
RC_USER_INITIALS,
std::string user_initials;
/// icon set name
std::string icon_set;
+ /// ui style name
+ std::string ui_style = "default";
/// whether to use the icons from the theme
bool use_system_theme_icons = false;
/// True if the TeX engine cannot handle posix paths
// Add a buffer to the current view, do not switch to it.
virtual bool unhide(Buffer * buf) = 0;
+ // Apply preferences at the start
+ static void applyPrefs();
};
/// Return the list of loadable formats.
return qstring_to_ucs4(findImg(toqstr(c)));
}
+void Application::applyPrefs()
+{
+ if (lyxrc.ui_style != system_lyxrc.ui_style)
+ lyx::frontend::GuiApplication::setStyle(toqstr(lyxrc.ui_style));
+}
FuncStatus GuiApplication::getStatus(FuncRequest const & cmd) const
{
#include <QPushButton>
#include <QSpinBox>
#include <QString>
+#include <QStyleFactory>
#include <QTreeWidget>
#include <QTreeWidgetItem>
#include <QValidator>
this, SIGNAL(changed()));
connect(iconSetCO, SIGNAL(activated(int)),
this, SIGNAL(changed()));
+ connect(uiStyleCO, SIGNAL(activated(int)),
+ this, SIGNAL(changed()));
connect(useSystemThemeIconsCB, SIGNAL(clicked()),
this, SIGNAL(changed()));
connect(lastfilesSB, SIGNAL(valueChanged(int)),
iconSetCO->addItem(qt_("Classic"), "classic");
iconSetCO->addItem(qt_("Oxygen"), "oxygen");
+ uiStyleCO->addItem(toqstr(system_lyxrc.ui_style));
+ for (const auto& style : QStyleFactory::keys())
+ {
+ uiStyleCO->addItem(style.toLower());
+ }
+
if (guiApp->platformName() != "xcb"
&& !guiApp->platformName().contains("wayland"))
useSystemThemeIconsCB->hide();
rc.icon_set = fromqstr(iconSetCO->itemData(
iconSetCO->currentIndex()).toString());
+ rc.ui_style = fromqstr(uiStyleCO->currentText());
+ if (rc.ui_style!=system_lyxrc.ui_style)
+ frontend::GuiApplication::setStyle(uiStyleCO->currentText());
+
rc.ui_file = internal_path(fromqstr(uiFileED->text()));
rc.use_system_theme_icons = useSystemThemeIconsCB->isChecked();
rc.num_lastfiles = lastfilesSB->value();
if (iconset < 0)
iconset = 0;
iconSetCO->setCurrentIndex(iconset);
+ uiStyleCO->setCurrentIndex(uiStyleCO->findText(toqstr(rc.ui_style)));
useSystemThemeIconsCB->setChecked(rc.use_system_theme_icons);
uiFileED->setText(toqstr(external_path(rc.ui_file)));
lastfilesSB->setValue(rc.num_lastfiles);
<x>0</x>
<y>0</y>
<width>556</width>
- <height>476</height>
+ <height>502</height>
</rect>
</property>
<property name="sizePolicy">
</item>
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout" columnstretch="0,1,0">
+ <item row="1" column="2">
+ <layout class="QHBoxLayout" name="horizontalLayout"/>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="uiFilePB">
+ <property name="text">
+ <string>Bro&wse...</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="iconSetCO">
+ <property name="toolTip">
+ <string>The icon set to use. Warning: normal size of icons may be wrong until you save the preferences and restart LyX.</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="iconSetLA">
+ <property name="text">
+ <string>&Icon set:</string>
+ </property>
+ <property name="buddy">
+ <cstring>iconSetCO</cstring>
+ </property>
+ </widget>
+ </item>
<item row="0" column="0">
<widget class="QLabel" name="uiFileLA">
<property name="text">
<item row="0" column="1">
<widget class="QLineEdit" name="uiFileED"/>
</item>
- <item row="0" column="2">
- <widget class="QPushButton" name="uiFilePB">
+ <item row="2" column="0">
+ <widget class="QLabel" name="uiStyleLA">
<property name="text">
- <string>Bro&wse...</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="iconSetLA">
- <property name="text">
- <string>&Icon set:</string>
+ <string>User interface &style:</string>
</property>
<property name="buddy">
- <cstring>iconSetCO</cstring>
+ <cstring>uiStyleCO</cstring>
</property>
</widget>
</item>
- <item row="1" column="1">
- <widget class="QComboBox" name="iconSetCO">
+ <item row="2" column="1">
+ <widget class="QComboBox" name="uiStyleCO">
<property name="toolTip">
- <string>The icon set to use. Warning: normal size of icons may be wrong until you save the preferences and restart LyX.</string>
+ <string>Only certain styles may support dark mode, e.g. fusion on Windows</string>
</property>
</widget>
</item>
- <item row="1" column="2">
- <layout class="QHBoxLayout" name="horizontalLayout"/>
+ <item row="2" column="2">
+ <layout class="QHBoxLayout" name="horizontalLayout_2"/>
</item>
</layout>
</item>