From 3b71d1fc1ed5518e820c545af8b346c6970704c2 Mon Sep 17 00:00:00 2001 From: yam Date: Sun, 7 Jun 2020 01:15:39 -0500 Subject: [PATCH] Bug 2465 - Treble height Selection Toolbar --- src/AudacityApp.cpp | 28 +++++++++++++++++++++++----- src/toolbars/DeviceToolBar.cpp | 26 ++++++++++++++------------ src/toolbars/SelectionBar.cpp | 19 +++++++++++++++++-- 3 files changed, 54 insertions(+), 19 deletions(-) diff --git a/src/AudacityApp.cpp b/src/AudacityApp.cpp index 5eeda868d..7dbe0e0f0 100644 --- a/src/AudacityApp.cpp +++ b/src/AudacityApp.cpp @@ -1085,19 +1085,37 @@ bool AudacityApp::OnInit() // Some GTK themes produce larger combo boxes that make them taller // than our single toolbar height restriction. This will remove some // of the extra space themes add. - // - // NOTE: It's important that the widgets are created with an initial - // size, otherwise this override will not work. #if defined(__WXGTK3__) && defined(HAVE_GTK) - // LLL: I've been unsuccessful at overriding GTK3 styles :-( + GtkWidget *combo = gtk_combo_box_new(); + GtkCssProvider *provider = gtk_css_provider_new(); + gtk_css_provider_load_from_data(GTK_CSS_PROVIDER(provider), + ".linked entry,\n" + ".linked button,\n" + ".linked combobox box.linked button,\n" + ".horizontal.linked entry,\n" + ".horizontal.linked button,\n" + ".horizontal.linked combobox box.linked button,\n" + "combobox {\n" + " padding-top: 0px;\n" + " padding-bottom: 0px;\n" + " padding-left: 4px;\n" + " padding-right: 4px;\n" + " margin: 0px;\n" + " font-size: 95%;\n" + "}", -1, NULL); + gtk_style_context_add_provider_for_screen(gtk_widget_get_screen(combo), + GTK_STYLE_PROVIDER (provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + g_object_unref(provider); + g_object_unref(combo); #elif defined(__WXGTK__) && defined(HAVE_GTK) gtk_rc_parse_string("style \"audacity\" {\n" " GtkButton::inner_border = { 0, 0, 0, 0 }\n" + " GtkEntry::inner_border = { 0, 0, 0, 0 }\n" " xthickness = 4\n" " ythickness = 0\n" "}\n" "widget_class \"*GtkCombo*\" style \"audacity\""); - #endif // Don't use AUDACITY_NAME here. diff --git a/src/toolbars/DeviceToolBar.cpp b/src/toolbars/DeviceToolBar.cpp index 0d2d34932..fccb1fa7c 100644 --- a/src/toolbars/DeviceToolBar.cpp +++ b/src/toolbars/DeviceToolBar.cpp @@ -167,6 +167,20 @@ void DeviceToolBar::Populate() #endif Add(mOutput, 30, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT, 1); +#if defined(__WXGTK3__) + // Nothing special +#elif defined(__WXGTK__) + // Scale the font to fit inside (hopefully) + wxFont font = mHost->GetFont(); + font.Scale((double) toolbarSingle / mHost->GetSize().GetHeight()); + + // Set it + mHost->SetFont(font); + mInput->SetFont(font); + mInputChannels->SetFont(font); + mOutput->SetFont(font); +#endif + mHost->Bind(wxEVT_SET_FOCUS, &DeviceToolBar::OnFocus, this); @@ -410,10 +424,7 @@ void DeviceToolBar::FillHosts() mHost->Enable(false); } -// mHost->InvalidateBestSize(); mHost->SetMinSize(wxSize(50, wxDefaultCoord)); -// mHost->SetMaxSize(wxDefaultSize); -// mHost->SetMaxSize(wxSize(mHost->GetBestSize().x, wxDefaultCoord)); } void DeviceToolBar::FillHostDevices() @@ -479,10 +490,7 @@ void DeviceToolBar::FillHostDevices() } mInput->Enable(mInput->GetCount() ? true : false); -// mInput->InvalidateBestSize(); mInput->SetMinSize(wxSize(50, wxDefaultCoord)); -// mInput->SetMaxSize(wxDefaultSize); -// mInput->SetMaxSize(wxSize(mInput->GetBestSize().x, wxDefaultCoord)); for (auto & device : outMaps) { if (foundHostIndex == device.hostIndex) { @@ -497,10 +505,7 @@ void DeviceToolBar::FillHostDevices() } mOutput->Enable(mOutput->GetCount() ? true : false); -// mOutput->InvalidateBestSize(); mOutput->SetMinSize(wxSize(50, wxDefaultCoord)); -// mOutput->SetMaxSize(wxDefaultSize); -// mOutput->SetMaxSize(wxSize(mOutput->GetBestSize().x, wxDefaultCoord)); // The setting of the Device is left up to OnChoice } @@ -548,10 +553,7 @@ void DeviceToolBar::FillInputChannels() } mInputChannels->Enable(mInputChannels->GetCount() ? true : false); -// mInputChannels->InvalidateBestSize(); mInputChannels->SetMinSize(wxSize(50, wxDefaultCoord)); -// mInputChannels->SetMaxSize(wxDefaultSize); -// mInputChannels->SetMaxSize(wxSize(mInputChannels->GetBestSize().x, wxDefaultCoord)); } void DeviceToolBar::OnRescannedDevices( wxCommandEvent &event ) diff --git a/src/toolbars/SelectionBar.cpp b/src/toolbars/SelectionBar.cpp index 2f34501a1..017edd5c0 100644 --- a/src/toolbars/SelectionBar.cpp +++ b/src/toolbars/SelectionBar.cpp @@ -198,9 +198,9 @@ void SelectionBar::Populate() // Top row (mostly labels) wxColour clrText = theTheme.Colour( clrTrackPanelText ); wxColour clrText2 = *wxBLUE; - AddTitle( XO("Project Rate (Hz)"), mainSizer ); + auStaticText *rateLabel = AddTitle( XO("Project Rate (Hz)"), mainSizer ); AddVLine( mainSizer ); - AddTitle( XO("Snap-To"), mainSizer ); + auStaticText *snapLabel = AddTitle( XO("Snap-To"), mainSizer ); AddVLine( mainSizer ); #ifdef TIME_IN_SELECT_TOOLBAR AddTitle( XO("Audio Position"), mainSizer ); @@ -319,6 +319,21 @@ void SelectionBar::Populate() mainSizer->Add(hSizer.release(), 0, wxALIGN_TOP | wxRIGHT, 0); } +#if defined(__WXGTK3__) + // Nothing special +#elif defined(__WXGTK__) + // Ensure the font fits inside (hopefully) + wxFont font = mChoice->GetFont(); + font.Scale((double) toolbarSingle / mChoice->GetSize().GetHeight()); + + rateLabel->SetFont(font); + snapLabel->SetFont(font); + mChoice->SetFont(font); + mRateBox->SetFont(font); + mRateText->SetFont(font); + mSnapTo->SetFont(font); +#endif + // Make sure they are fully expanded to the longest item mChoice->SetMinSize(wxSize(mChoice->GetBestSize().x, toolbarSingle)); mRateBox->SetMinSize(wxSize(mRateBox->GetBestSize().x, toolbarSingle));