mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-09 18:27:00 +00:00
Remove borders and paddings from native controls on Linux (#14873)
* init * update * Update SpinInput.cpp * possible fix for em_unit * button alignment * match titlebar height * revert em_value for macOS and Windows * Update GUI_Utils.hpp * Merge branch 'main' into linux-black-borders-2 * Revert "button alignment" This reverts commit3fc7461071. * Revert "match titlebar height" This reverts commitc4aa1d9f1e. * revert dpi changes * match platform tags * remove radio box borders * Fix code indent
This commit is contained in:
@@ -548,7 +548,7 @@ void RemoveButtonBorder(wxWindow* win)
|
|||||||
GtkCssProvider* provider = gtk_css_provider_new();
|
GtkCssProvider* provider = gtk_css_provider_new();
|
||||||
|
|
||||||
const char* css =
|
const char* css =
|
||||||
"button {"
|
"button, button:hover, button:active, button:focus {"
|
||||||
" border: none;"
|
" border: none;"
|
||||||
" outline: none;"
|
" outline: none;"
|
||||||
" box-shadow: none;"
|
" box-shadow: none;"
|
||||||
@@ -589,6 +589,58 @@ void RemoveButtonBorder(wxWindow* win)
|
|||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RemoveInputBorder(wxWindow* win)
|
||||||
|
{
|
||||||
|
GtkWidget* widget = win->GetHandle();
|
||||||
|
if (!widget) return;
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(3, 0, 0)
|
||||||
|
// GTK3+: use CSS provider
|
||||||
|
GtkCssProvider* provider = gtk_css_provider_new();
|
||||||
|
|
||||||
|
// Target 'entry' and its inner subnodes (like text selection areas)
|
||||||
|
const char* css =
|
||||||
|
"entry, entry text, entry undershoot {"
|
||||||
|
" border: none;"
|
||||||
|
" outline: none;"
|
||||||
|
" box-shadow: none;"
|
||||||
|
" padding: 0px;"
|
||||||
|
" margin: 0px;"
|
||||||
|
" min-height: 0px;"
|
||||||
|
" min-width: 0px;"
|
||||||
|
" background: none;"
|
||||||
|
"}";
|
||||||
|
|
||||||
|
#if GTK_CHECK_VERSION(4, 0, 0)
|
||||||
|
// GTK4
|
||||||
|
gtk_css_provider_load_from_data(provider, css, -1);
|
||||||
|
#else
|
||||||
|
// GTK3
|
||||||
|
gtk_css_provider_load_from_data(provider, css, -1, nullptr);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
GtkStyleContext* ctx = gtk_widget_get_style_context(widget);
|
||||||
|
gtk_style_context_add_provider(
|
||||||
|
ctx,
|
||||||
|
GTK_STYLE_PROVIDER(provider),
|
||||||
|
GTK_STYLE_PROVIDER_PRIORITY_USER
|
||||||
|
);
|
||||||
|
g_object_unref(provider);
|
||||||
|
|
||||||
|
#else
|
||||||
|
// GTK2: Target the x/y thickness of the entry widget
|
||||||
|
gtk_rc_parse_string(
|
||||||
|
"style \"no-padding-entry\" {"
|
||||||
|
" xthickness = 0"
|
||||||
|
" ythickness = 0"
|
||||||
|
" GtkEntry::inner-border = { 0, 0, 0, 0 }"
|
||||||
|
" GtkEntry::focus-line-width = 0"
|
||||||
|
"}"
|
||||||
|
"class \"GtkEntry\" style \"no-padding-entry\""
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
#endif // __WXGTK__
|
#endif // __WXGTK__
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
|||||||
@@ -472,8 +472,9 @@ void dataview_remove_insets(wxDataViewCtrl* dv);
|
|||||||
void staticbox_remove_margin(wxStaticBox* sb);
|
void staticbox_remove_margin(wxStaticBox* sb);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK__
|
||||||
void RemoveButtonBorder(wxWindow* win);
|
void RemoveButtonBorder(wxWindow* win); // for wxButton/wxBitmapToggleButton based controls (SwitchButton, CheckBox)
|
||||||
|
void RemoveInputBorder(wxWindow* win); // for TextCtrl based controls (TextInput, ComboBox, SpinInput..)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__WXOSX__) || defined(__linux__)
|
#if defined(__WXOSX__) || defined(__linux__)
|
||||||
|
|||||||
@@ -865,6 +865,9 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset
|
|||||||
clr_picker = new wxBitmapButton(parent, wxID_ANY, {}, wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), wxBU_EXACTFIT | wxBU_AUTODRAW | wxBORDER_NONE);
|
clr_picker = new wxBitmapButton(parent, wxID_ANY, {}, wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), wxBU_EXACTFIT | wxBU_AUTODRAW | wxBORDER_NONE);
|
||||||
clr_picker->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
|
clr_picker->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
|
||||||
clr_picker->SetToolTip(_L("Click to select filament color"));
|
clr_picker->SetToolTip(_L("Click to select filament color"));
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
RemoveButtonBorder(clr_picker);
|
||||||
|
#endif
|
||||||
clr_picker->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
|
clr_picker->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
|
||||||
// Check if it's an official filament
|
// Check if it's an official filament
|
||||||
auto fila_type = Preset::remove_suffix_modified(GetValue().ToUTF8().data());
|
auto fila_type = Preset::remove_suffix_modified(GetValue().ToUTF8().data());
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
#include "../wxExtensions.hpp"
|
#include "../wxExtensions.hpp"
|
||||||
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK__
|
||||||
#include "../GUI_Utils.hpp"
|
#include "../GUI_Utils.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ CheckBox::CheckBox(wxWindow *parent, int id)
|
|||||||
Bind(wxEVT_LEAVE_WINDOW, &CheckBox::updateBitmap, this);
|
Bind(wxEVT_LEAVE_WINDOW, &CheckBox::updateBitmap, this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK__
|
||||||
Slic3r::GUI::RemoveButtonBorder(this);
|
Slic3r::GUI::RemoveButtonBorder(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
#include "../wxExtensions.hpp"
|
#include "../wxExtensions.hpp"
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
#include "../GUI_Utils.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
RadioBox::RadioBox(wxWindow *parent)
|
RadioBox::RadioBox(wxWindow *parent)
|
||||||
@@ -15,6 +19,7 @@ RadioBox::RadioBox(wxWindow *parent)
|
|||||||
// Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
|
// Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
|
||||||
update();
|
update();
|
||||||
#ifdef __WXGTK__
|
#ifdef __WXGTK__
|
||||||
|
Slic3r::GUI::RemoveButtonBorder(this);
|
||||||
wxSize bestSize = GetBestSize();
|
wxSize bestSize = GetBestSize();
|
||||||
bestSize.IncTo(m_on.GetBmpSize());
|
bestSize.IncTo(m_on.GetBmpSize());
|
||||||
SetSize(bestSize);
|
SetSize(bestSize);
|
||||||
|
|||||||
@@ -5,6 +5,10 @@
|
|||||||
|
|
||||||
#include <wx/dcgraph.h>
|
#include <wx/dcgraph.h>
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
#include "../GUI_Utils.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(SpinInput, StaticBox)
|
BEGIN_EVENT_TABLE(SpinInput, StaticBox)
|
||||||
|
|
||||||
EVT_KEY_DOWN(SpinInput::keyPressed)
|
EVT_KEY_DOWN(SpinInput::keyPressed)
|
||||||
@@ -58,6 +62,11 @@ void SpinInput::Create(wxWindow *parent,
|
|||||||
state_handler.attach({&label_color, &text_color});
|
state_handler.attach({&label_color, &text_color});
|
||||||
state_handler.update_binds();
|
state_handler.update_binds();
|
||||||
text_ctrl = new TextCtrl(this, wxID_ANY, text, {20, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER, wxTextValidator(wxFILTER_DIGITS));
|
text_ctrl = new TextCtrl(this, wxID_ANY, text, {20, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER, wxTextValidator(wxFILTER_DIGITS));
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
Slic3r::GUI::RemoveInputBorder(text_ctrl);
|
||||||
|
#endif
|
||||||
|
|
||||||
text_ctrl->SetFont(Label::Body_14);
|
text_ctrl->SetFont(Label::Body_14);
|
||||||
text_ctrl->SetBackgroundColour(background_color.colorForStates(state_handler.states()));
|
text_ctrl->SetBackgroundColour(background_color.colorForStates(state_handler.states()));
|
||||||
text_ctrl->SetForegroundColour(text_color.colorForStates(state_handler.states()));
|
text_ctrl->SetForegroundColour(text_color.colorForStates(state_handler.states()));
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
#include "libslic3r/MacUtils.hpp"
|
#include "libslic3r/MacUtils.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK__
|
||||||
#include "../GUI_Utils.hpp"
|
#include "../GUI_Utils.hpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ SwitchButton::SwitchButton(wxWindow* parent, wxWindowID id)
|
|||||||
Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
|
Bind(wxEVT_TOGGLEBUTTON, [this](auto& e) { update(); e.Skip(); });
|
||||||
SetFont(Label::Body_12);
|
SetFont(Label::Body_12);
|
||||||
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK__
|
||||||
Slic3r::GUI::RemoveButtonBorder(this);
|
Slic3r::GUI::RemoveButtonBorder(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,10 @@
|
|||||||
#include <wx/dcclient.h>
|
#include <wx/dcclient.h>
|
||||||
#include <wx/dcgraph.h>
|
#include <wx/dcgraph.h>
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
#include "../GUI_Utils.hpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(TextInput, StaticBox)
|
BEGIN_EVENT_TABLE(TextInput, StaticBox)
|
||||||
|
|
||||||
EVT_PAINT(TextInput::paintEvent)
|
EVT_PAINT(TextInput::paintEvent)
|
||||||
@@ -60,6 +64,11 @@ void TextInput::Create(wxWindow * parent,
|
|||||||
state_handler.attach({&label_color, & text_color});
|
state_handler.attach({&label_color, & text_color});
|
||||||
state_handler.update_binds();
|
state_handler.update_binds();
|
||||||
text_ctrl = new TextCtrl(this, wxID_ANY, text, {4, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER);
|
text_ctrl = new TextCtrl(this, wxID_ANY, text, {4, 4}, wxDefaultSize, style | wxBORDER_NONE | wxTE_PROCESS_ENTER);
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
Slic3r::GUI::RemoveInputBorder(text_ctrl);
|
||||||
|
#endif
|
||||||
|
|
||||||
text_ctrl->SetFont(Label::Body_14);
|
text_ctrl->SetFont(Label::Body_14);
|
||||||
text_ctrl->SetInitialSize(text_ctrl->GetBestSize());
|
text_ctrl->SetInitialSize(text_ctrl->GetBestSize());
|
||||||
text_ctrl->SetBackgroundColour(background_color.colorForStates(state_handler.states()));
|
text_ctrl->SetBackgroundColour(background_color.colorForStates(state_handler.states()));
|
||||||
|
|||||||
@@ -1022,6 +1022,10 @@ ScalableButton::ScalableButton( wxWindow * parent,
|
|||||||
m_width = size.x * 10 / em;
|
m_width = size.x * 10 / em;
|
||||||
m_height= size.y * 10 / em;
|
m_height= size.y * 10 / em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
Slic3r::GUI::RemoveButtonBorder(this);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user