From 0578010fce1928fe50d999ef328b3cba4fe7d1fa Mon Sep 17 00:00:00 2001 From: Hombre Date: Sun, 12 Mar 2017 23:18:04 +0100 Subject: [PATCH 1/3] Fix unexpected font change on first Preference change (issue #3637) --- rtgui/preferences.cc | 66 ++++++++++++++++++++++++++++++++++++++------ rtgui/preferences.h | 8 ++++-- 2 files changed, 63 insertions(+), 11 deletions(-) diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index ed613c61f..5b28d94c1 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -41,6 +41,8 @@ Preferences::Preferences (RTWindow *rtwindow) , rprofiles (nullptr) , iprofiles (nullptr) , parent (rtwindow) + , newFont (false) + , newCPFont (false) { regex = Glib::Regex::create(THEMEREGEXSTR, Glib::RegexCompileFlags::REGEX_CASELESS); @@ -56,6 +58,10 @@ Preferences::Preferences (RTWindow *rtwindow) set_size_request (650, -1); set_default_size (options.preferencesWidth, options.preferencesHeight); + Pango::FontDescription defaultFont = get_style_context ()->get_font(); + initialFontFamily = defaultFont.get_family (); + initialFontSize = defaultFont.get_size () / Pango::SCALE; + Gtk::Box* mainBox = get_content_area (); //GTK318 #if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION < 20 @@ -1032,7 +1038,11 @@ Gtk::Widget* Preferences::getGeneralPanel () fontButton = Gtk::manage( new Gtk::FontButton ()); setExpandAlignProperties(fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); fontButton->set_use_size(true); - fontButton->set_font_name(Glib::ustring::compose("%1 %2", options.fontFamily == "default" ? "sans" : options.fontFamily, options.fontSize)); + if (options.fontFamily == "default") { + fontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); + } else { + fontButton->set_font_name (Glib::ustring::compose("%1 %2", options.fontFamily, options.fontSize)); + } themeGrid->attach_next_to(*fontlab, *theme, Gtk::POS_RIGHT, 1, 1); themeGrid->attach_next_to(*fontButton, *fontlab, Gtk::POS_RIGHT, 1, 1); @@ -1042,7 +1052,11 @@ Gtk::Widget* Preferences::getGeneralPanel () colorPickerFontButton = Gtk::manage( new Gtk::FontButton ()); setExpandAlignProperties(fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); colorPickerFontButton->set_use_size(true); - colorPickerFontButton->set_font_name(Glib::ustring::compose("%1 %2", options.CPFontFamily == "default" ? "sans" : options.CPFontFamily, options.CPFontSize)); + if (options.fontFamily == "default") { + colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); + } else { + colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", options.CPFontFamily, options.CPFontSize)); + } themeGrid->attach_next_to(*cpfontlab, *fontButton, Gtk::POS_RIGHT, 1, 1); themeGrid->attach_next_to(*colorPickerFontButton, *cpfontlab, Gtk::POS_RIGHT, 1, 1); @@ -1193,6 +1207,7 @@ Gtk::Widget* Preferences::getGeneralPanel () langAutoDetectConn = ckbLangAutoDetect->signal_toggled().connect (sigc::mem_fun(*this, &Preferences::langAutoDetectToggled)); tconn = theme->signal_changed().connect( sigc::mem_fun(*this, &Preferences::themeChanged) ); fconn = fontButton->signal_font_set().connect( sigc::mem_fun(*this, &Preferences::fontChanged) ); + cpfconn = colorPickerFontButton->signal_font_set().connect( sigc::mem_fun(*this, &Preferences::cpFontChanged) ); return mvbsd; } @@ -1582,12 +1597,16 @@ void Preferences::storePreferences () moptions.navGuideBrush[3] = butNavGuideCol->get_alpha() / 65535.0; Pango::FontDescription fd(fontButton->get_font_name()); - moptions.fontFamily = fd.get_family(); - moptions.fontSize = fd.get_size() / Pango::SCALE; + if (newFont) { + moptions.fontFamily = fd.get_family(); + moptions.fontSize = fd.get_size() / Pango::SCALE; + } Pango::FontDescription cpfd(colorPickerFontButton->get_font_name()); - moptions.CPFontFamily = cpfd.get_family(); - moptions.CPFontSize = cpfd.get_size() / Pango::SCALE; + if (newCPFont) { + moptions.CPFontFamily = cpfd.get_family(); + moptions.CPFontSize = cpfd.get_size() / Pango::SCALE; + } #ifdef WIN32 moptions.gimpDir = gimpDir->get_filename (); @@ -1758,6 +1777,7 @@ void Preferences::fillPreferences () tconn.block (true); fconn.block (true); + cpfconn.block (true); sconn.block (true); dfconn.block (true); ffconn.block (true); @@ -1843,8 +1863,17 @@ void Preferences::fillPreferences () butNavGuideCol->set_rgba(NavGuideCol); butNavGuideCol->set_alpha ( (unsigned short)(moptions.navGuideBrush[3] * 65535.0)); - fontButton->set_font_name(Glib::ustring::compose("%1 %2", options.fontFamily == "default" ? "sans" : options.fontFamily, options.fontSize)); - colorPickerFontButton->set_font_name(Glib::ustring::compose("%1 %2", options.CPFontFamily == "default" ? "sans" : options.CPFontFamily, options.CPFontSize)); + if (options.fontFamily == "default") { + fontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); + } else { + fontButton->set_font_name (Glib::ustring::compose("%1 %2", options.fontFamily, options.fontSize)); + } + + if (options.CPFontFamily == "default") { + colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); + } else { + colorPickerFontButton->set_font_name (Glib::ustring::compose("%1 %2", options.CPFontFamily, options.CPFontSize)); + } showDateTime->set_active (moptions.fbShowDateTime); showBasicExif->set_active (moptions.fbShowBasicExif); @@ -1965,6 +1994,7 @@ void Preferences::fillPreferences () addc.block (false); setc.block (false); + cpfconn.block (false); fconn.block (false); tconn.block (false); sconn.block (false); @@ -2047,7 +2077,11 @@ void Preferences::cancelPressed () // set the initial font back Pango::FontDescription fd(fontButton->get_font_name()); if (fd.get_family() != options.fontFamily && (fd.get_size() / Pango::SCALE) != options.fontSize) { - switchFontTo(options.fontFamily == "default" ? "sans" : options.fontFamily, options.fontSize); + if (options.fontFamily == "default") { + switchFontTo(initialFontFamily, initialFontSize); + } else { + switchFontTo(options.fontFamily, options.fontSize); + } } // update the profileStore @@ -2244,10 +2278,17 @@ void Preferences::switchThemeTo(Glib::ustring newTheme) void Preferences::fontChanged () { + newFont = true; Pango::FontDescription fd(fontButton->get_font_name()); switchFontTo(fd.get_family(), fd.get_size() / Pango::SCALE); } +void Preferences::cpFontChanged () +{ + + newCPFont = true; +} + void Preferences::switchFontTo(const Glib::ustring &newFontFamily, const int newFontSize) { @@ -2272,6 +2313,13 @@ void Preferences::switchFontTo(const Glib::ustring &newFontFamily, const int new printf("Error: Can't find the font named \"%s\"\n", newFontFamily.c_str()); } } + else { + if (fontcss) { + fontcss = Gtk::CssProvider::create(); + Glib::RefPtr screen = Gdk::Screen::get_default(); + Gtk::StyleContext::remove_provider_for_screen(screen, fontcss); + } + } } void Preferences::workflowUpdate () diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 50f72a957..18c8a466b 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -208,10 +208,13 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener Glib::ustring storedValueImg; Options moptions; - sigc::connection tconn, sconn, fconn, addc, setc, dfconn, ffconn, bpconn, rpconn, ipconn; + sigc::connection tconn, sconn, fconn, cpfconn, addc, setc, dfconn, ffconn, bpconn, rpconn, ipconn; sigc::connection autoMonProfileConn, sndEnableConn, langAutoDetectConn, autocielabConn; Glib::ustring initialTheme; - Glib::ustring initialFont; + Glib::ustring initialFontFamily; + int initialFontSize; + bool newFont; + bool newCPFont; void fillPreferences (); void storePreferences (); @@ -222,6 +225,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener void workflowUpdate(); void themeChanged (); void fontChanged (); + void cpFontChanged (); void forRAWComboChanged (); void forImageComboChanged (); void layoutComboChanged (); From 3660ed5f95065d40f924467d6acfd1caf69dd5a6 Mon Sep 17 00:00:00 2001 From: Hombre Date: Mon, 13 Mar 2017 21:41:01 +0100 Subject: [PATCH 2/3] (attempt to ) solving issue #3759 --- rtgui/wavelet.cc | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/rtgui/wavelet.cc b/rtgui/wavelet.cc index 71f3235c6..e1d0fc425 100644 --- a/rtgui/wavelet.cc +++ b/rtgui/wavelet.cc @@ -172,8 +172,7 @@ Wavelet::Wavelet() : enableFinalConn = expfinal->signal_enabled_toggled().connect ( sigc::bind( sigc::mem_fun(this, &Wavelet::enableToggled), expfinal) ); // Wavelet Settings - Gtk::VBox* const settingsVBox = Gtk::manage(new Gtk::VBox()); - settingsVBox->set_spacing(2); + ToolParamBlock* const settingsBox = Gtk::manage (new ToolParamBlock()); strength->setAdjusterListener (this); @@ -247,16 +246,16 @@ Wavelet::Wavelet() : levdirSubHBox->pack_start(*Lmethod); levdirSubHBox->pack_start(*Dirmethod, Gtk::PACK_EXPAND_WIDGET, 2); // same, but 2 not 4? - settingsVBox->pack_start(*strength); - settingsVBox->pack_start(*thres); - settingsVBox->pack_start(*tilesizeHBox); - settingsVBox->pack_start(*daubcoeffHBox); - settingsVBox->pack_start(*backgroundHBox); - settingsVBox->pack_start(*levdirMainHBox); - settingsVBox->pack_start(*levdirSubHBox); + settingsBox->pack_start(*strength); + settingsBox->pack_start(*thres); + settingsBox->pack_start(*tilesizeHBox); + settingsBox->pack_start(*daubcoeffHBox); + settingsBox->pack_start(*backgroundHBox); + settingsBox->pack_start(*levdirMainHBox); + settingsBox->pack_start(*levdirSubHBox); // Contrast - Gtk::VBox* const levBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const levBox = Gtk::manage (new ToolParamBlock()); Gtk::HBox* const buttonBox = Gtk::manage (new Gtk::HBox(true, 10)); levBox->pack_start(*buttonBox, Gtk::PACK_SHRINK, 2); @@ -335,7 +334,7 @@ Wavelet::Wavelet() : levBox->pack_start(*contrastSHFrame); // Chromaticity - Gtk::VBox* const chBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const chBox = Gtk::manage (new ToolParamBlock()); Gtk::Label* const labmch = Gtk::manage(new Gtk::Label(M("TP_WAVELET_CHTYPE") + ":")); Gtk::HBox* const ctboxch = Gtk::manage(new Gtk::HBox()); @@ -405,7 +404,7 @@ Wavelet::Wavelet() : } // Toning - Gtk::VBox* const tonBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const tonBox = Gtk::manage (new ToolParamBlock()); opaCurveEditorG->setCurveListener (this); @@ -434,7 +433,7 @@ Wavelet::Wavelet() : tonBox->pack_start( *opacityCurveEditorG, Gtk::PACK_SHRINK, 2); // Denoise and Refine - Gtk::VBox* const noiseBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const noiseBox = Gtk::manage (new ToolParamBlock()); linkedg->set_active (true); linkedgConn = linkedg->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::linkedgToggled) ); @@ -458,7 +457,7 @@ Wavelet::Wavelet() : noiseBox->pack_start( *level3noise, Gtk::PACK_SHRINK, 0); // Edge Sharpness - Gtk::VBox* const edgBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const edgBox = Gtk::manage (new ToolParamBlock()); edgval->setAdjusterListener(this); edgBox->pack_start(*edgval); @@ -571,7 +570,7 @@ Wavelet::Wavelet() : edgBox->pack_start(*ctboxES); // Gamut - Gtk::VBox* const conBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const conBox = Gtk::manage (new ToolParamBlock()); median->set_active (true); medianConn = median->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::medianToggled) ); @@ -621,7 +620,7 @@ Wavelet::Wavelet() : conBox->pack_start(*avoid); // Residual Image - Gtk::VBox* const resBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const resBox = Gtk::manage (new ToolParamBlock()); rescon->setAdjusterListener (this); resBox->pack_start(*rescon, Gtk::PACK_SHRINK); @@ -822,7 +821,7 @@ Wavelet::Wavelet() : tmr->set_tooltip_text (M("TP_WAVELET_BALCHRO_TOOLTIP")); tmrConn = tmr->signal_toggled().connect( sigc::mem_fun(*this, &Wavelet::tmrToggled) ); - Gtk::VBox* const finalBox = Gtk::manage (new ToolParamBlock()); + ToolParamBlock* const finalBox = Gtk::manage (new ToolParamBlock()); finalBox->pack_start (*ctboxBA); finalBox->pack_start(*balance); @@ -839,7 +838,7 @@ Wavelet::Wavelet() : //----------------------------- - expsettings->add(*settingsVBox); + expsettings->add(*settingsBox); expsettings->setLevel(2); pack_start (*expsettings); From 6a3baa3335710102dc417ccc9aa57d4951359018 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 17 Mar 2017 01:03:16 +0100 Subject: [PATCH 3/3] Set homedir as default path for queue_save/gimp/ps path if path from options not exists --- rtgui/batchqueuepanel.cc | 2 ++ rtgui/preferences.cc | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 66f5341fa..1810501b5 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -115,6 +115,8 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) if (Glib::file_test (options.savePathFolder, Glib::FILE_TEST_IS_DIR)) { outdirFolder->set_current_folder (options.savePathFolder); + } else { + outdirFolder->set_current_folder (Glib::get_home_dir()); } outdirFolderButton = 0; diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 5b28d94c1..5a142ff29 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1895,13 +1895,13 @@ void Preferences::fillPreferences () if (Glib::file_test (moptions.gimpDir, Glib::FILE_TEST_IS_DIR)) { gimpDir->set_current_folder (moptions.gimpDir); } else { - gimpDir->set_current_folder (""); + gimpDir->set_current_folder (Glib::get_home_dir()); } if (Glib::file_test (moptions.psDir, Glib::FILE_TEST_IS_DIR)) { psDir->set_current_folder (moptions.psDir); } else { - psDir->set_current_folder (""); + psDir->set_current_folder (Glib::get_home_dir()); } #elif defined __APPLE__ @@ -1909,6 +1909,8 @@ void Preferences::fillPreferences () if (Glib::file_test (moptions.psDir, Glib::FILE_TEST_IS_DIR)) { psDir->set_current_folder (moptions.psDir); + } else { + psDir->set_current_folder (Glib::get_home_dir()); } #endif