Fix spacing/scaling of indicators on MacOS.
Also pushes indicator scaling improvements to GerbView.
This commit is contained in:
parent
7774a43762
commit
30b5adde17
|
@ -100,8 +100,6 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
|
||||||
{
|
{
|
||||||
DPI_SCALING_COMMON dpi( nullptr, m_frame );
|
DPI_SCALING_COMMON dpi( nullptr, m_frame );
|
||||||
|
|
||||||
const int c_indicatorSizeDIP = 10;
|
|
||||||
|
|
||||||
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
|
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
|
||||||
m_pointSize = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ).GetPointSize();
|
m_pointSize = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ).GetPointSize();
|
||||||
|
|
||||||
|
@ -154,7 +152,7 @@ APPEARANCE_CONTROLS_3D::APPEARANCE_CONTROLS_3D( EDA_3D_VIEWER_FRAME* aParent,
|
||||||
KeyNameFromKeyCode( VIEWPORT_SWITCH_KEY ),
|
KeyNameFromKeyCode( VIEWPORT_SWITCH_KEY ),
|
||||||
KeyNameFromKeyCode( VIEWPORT_SWITCH_KEY ) ) );
|
KeyNameFromKeyCode( VIEWPORT_SWITCH_KEY ) ) );
|
||||||
|
|
||||||
if( screenHeight <= 900 && m_pointSize >= FromDIP( c_indicatorSizeDIP ) )
|
if( screenHeight <= 900 && m_pointSize >= FromDIP( KIUI::c_IndicatorSizeDIP ) )
|
||||||
m_pointSize = m_pointSize * 8 / 10;
|
m_pointSize = m_pointSize * 8 / 10;
|
||||||
|
|
||||||
m_cbLayerPresets->Bind( wxEVT_CHOICE, &APPEARANCE_CONTROLS_3D::onLayerPresetChanged, this );
|
m_cbLayerPresets->Bind( wxEVT_CHOICE, &APPEARANCE_CONTROLS_3D::onLayerPresetChanged, this );
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <kiplatform/ui.h>
|
||||||
#include <widgets/indicator_icon.h>
|
#include <widgets/indicator_icon.h>
|
||||||
#include <wx/event.h>
|
#include <wx/event.h>
|
||||||
#include <wx/settings.h>
|
#include <wx/settings.h>
|
||||||
|
@ -75,9 +76,12 @@ wxImage createBlankImage( int size )
|
||||||
wxImage image( size, size );
|
wxImage image( size, size );
|
||||||
|
|
||||||
image.InitAlpha();
|
image.InitAlpha();
|
||||||
|
|
||||||
for( int y = 0; y < size; ++y )
|
for( int y = 0; y < size; ++y )
|
||||||
|
{
|
||||||
for( int x = 0; x < size; ++x )
|
for( int x = 0; x < size; ++x )
|
||||||
image.SetAlpha( x, y, wxIMAGE_ALPHA_TRANSPARENT );
|
image.SetAlpha( x, y, wxIMAGE_ALPHA_TRANSPARENT );
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
// wxWidgets on Windows chokes on an empty fully transparent bitmap and draws it
|
// wxWidgets on Windows chokes on an empty fully transparent bitmap and draws it
|
||||||
|
@ -162,14 +166,20 @@ wxBitmap createDiamond( int size, double aScaleFactor, wxColour aColour )
|
||||||
|
|
||||||
ROW_ICON_PROVIDER::ROW_ICON_PROVIDER( int aSizeDIP, wxWindow* aWindow )
|
ROW_ICON_PROVIDER::ROW_ICON_PROVIDER( int aSizeDIP, wxWindow* aWindow )
|
||||||
{
|
{
|
||||||
auto toPhys = [&]( int dip )
|
auto toPhys =
|
||||||
{
|
[&]( int dip )
|
||||||
return aWindow->ToPhys( aWindow->FromDIP( dip ) );
|
{
|
||||||
};
|
return aWindow->ToPhys( aWindow->FromDIP( dip ) );
|
||||||
|
};
|
||||||
|
|
||||||
double scale = aWindow->GetDPIScaleFactor();
|
double scale = aWindow->GetDPIScaleFactor();
|
||||||
wxColour shadowColor = wxSystemSettings().GetColour( wxSYS_COLOUR_3DDKSHADOW );
|
wxColour shadowColor = wxSystemSettings().GetColour( wxSYS_COLOUR_3DDKSHADOW );
|
||||||
|
|
||||||
|
#ifdef __WXMAC__
|
||||||
|
// Adjust for Retina
|
||||||
|
scale /= KIPLATFORM::UI::GetPixelScaleFactor( aWindow );
|
||||||
|
#endif
|
||||||
|
|
||||||
m_blankBitmap = wxBitmap( createBlankImage( toPhys( aSizeDIP ) ) );
|
m_blankBitmap = wxBitmap( createBlankImage( toPhys( aSizeDIP ) ) );
|
||||||
m_blankBitmap.SetScaleFactor( scale );
|
m_blankBitmap.SetScaleFactor( scale );
|
||||||
|
|
||||||
|
|
|
@ -446,12 +446,14 @@ void LAYER_WIDGET::insertRenderRow( int aRow, const ROW& aSpec )
|
||||||
bmb->SetToolTip( _( "Left double click or middle click for color change" ) );
|
bmb->SetToolTip( _( "Left double click or middle click for color change" ) );
|
||||||
m_RenderFlexGridSizer->wxSizer::Insert( index+col, bmb, 0, flags );
|
m_RenderFlexGridSizer->wxSizer::Insert( index+col, bmb, 0, flags );
|
||||||
|
|
||||||
bmb->Bind( wxEVT_RIGHT_DOWN, [this, bmb, renderName] ( wxMouseEvent& aEvt ) {
|
bmb->Bind( wxEVT_RIGHT_DOWN, [this, bmb, renderName] ( wxMouseEvent& aEvt )
|
||||||
OnRightDownRender( aEvt, bmb, renderName );
|
{
|
||||||
} );
|
OnRightDownRender( aEvt, bmb, renderName );
|
||||||
cb->Bind( wxEVT_RIGHT_DOWN, [this, bmb, renderName] ( wxMouseEvent& aEvt ) {
|
} );
|
||||||
OnRightDownRender( aEvt, bmb, renderName );
|
cb->Bind( wxEVT_RIGHT_DOWN, [this, bmb, renderName] ( wxMouseEvent& aEvt )
|
||||||
} );
|
{
|
||||||
|
OnRightDownRender( aEvt, bmb, renderName );
|
||||||
|
} );
|
||||||
|
|
||||||
// could add a left click handler on the color button that toggles checkbox.
|
// could add a left click handler on the color button that toggles checkbox.
|
||||||
}
|
}
|
||||||
|
@ -488,13 +490,12 @@ LAYER_WIDGET::LAYER_WIDGET( wxWindow* aParent, wxWindow* aFocusOwner, wxWindowID
|
||||||
wxPanel( aParent, id, pos, size, style ),
|
wxPanel( aParent, id, pos, size, style ),
|
||||||
m_smallestLayerString( wxT( "M...M" ) )
|
m_smallestLayerString( wxT( "M...M" ) )
|
||||||
{
|
{
|
||||||
int indicatorSize = ConvertDialogToPixels( wxSize( 6, 6 ) ).x;
|
m_IconProvider = new ROW_ICON_PROVIDER( KIUI::c_IndicatorSizeDIP, this );
|
||||||
m_IconProvider = new ROW_ICON_PROVIDER( indicatorSize, this );
|
|
||||||
|
|
||||||
int pointSize = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ).GetPointSize();
|
int pointSize = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ).GetPointSize();
|
||||||
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
|
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
|
||||||
|
|
||||||
if( screenHeight <= 900 && pointSize >= indicatorSize )
|
if( screenHeight <= 900 && pointSize >= FromDIP( KIUI::c_IndicatorSizeDIP ) )
|
||||||
pointSize = pointSize * 8 / 10;
|
pointSize = pointSize * 8 / 10;
|
||||||
|
|
||||||
m_PointSize = pointSize;
|
m_PointSize = pointSize;
|
||||||
|
|
|
@ -48,6 +48,13 @@ class wxMenu;
|
||||||
namespace KIUI
|
namespace KIUI
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#ifdef __WXMAC__
|
||||||
|
const int c_IndicatorSizeDIP = 6;
|
||||||
|
#else
|
||||||
|
const int c_IndicatorSizeDIP = 10;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the standard margin around a widget in the KiCad UI
|
* Get the standard margin around a widget in the KiCad UI
|
||||||
* @return margin in pixels
|
* @return margin in pixels
|
||||||
|
|
|
@ -413,10 +413,8 @@ APPEARANCE_CONTROLS::APPEARANCE_CONTROLS( PCB_BASE_FRAME* aParent, wxWindow* aFo
|
||||||
// Correct the min size from wxformbuilder not using fromdip
|
// Correct the min size from wxformbuilder not using fromdip
|
||||||
SetMinSize( FromDIP( GetMinSize() ) );
|
SetMinSize( FromDIP( GetMinSize() ) );
|
||||||
|
|
||||||
const int c_indicatorSizeDIP = 10;
|
|
||||||
|
|
||||||
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
|
int screenHeight = wxSystemSettings::GetMetric( wxSYS_SCREEN_Y );
|
||||||
m_iconProvider = new ROW_ICON_PROVIDER( c_indicatorSizeDIP, this );
|
m_iconProvider = new ROW_ICON_PROVIDER( KIUI::c_IndicatorSizeDIP, this );
|
||||||
m_pointSize = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ).GetPointSize();
|
m_pointSize = wxSystemSettings::GetFont( wxSYS_DEFAULT_GUI_FONT ).GetPointSize();
|
||||||
|
|
||||||
m_layerPanelColour = m_panelLayers->GetBackgroundColour().ChangeLightness( 110 );
|
m_layerPanelColour = m_panelLayers->GetBackgroundColour().ChangeLightness( 110 );
|
||||||
|
@ -465,7 +463,7 @@ APPEARANCE_CONTROLS::APPEARANCE_CONTROLS( PCB_BASE_FRAME* aParent, wxWindow* aFo
|
||||||
|
|
||||||
m_txtNetFilter->SetHint( _( "Filter nets" ) );
|
m_txtNetFilter->SetHint( _( "Filter nets" ) );
|
||||||
|
|
||||||
if( screenHeight <= 900 && m_pointSize >= FromDIP( c_indicatorSizeDIP ) )
|
if( screenHeight <= 900 && m_pointSize >= FromDIP( KIUI::c_IndicatorSizeDIP ) )
|
||||||
m_pointSize = m_pointSize * 8 / 10;
|
m_pointSize = m_pointSize * 8 / 10;
|
||||||
|
|
||||||
wxFont font = m_notebook->GetFont();
|
wxFont font = m_notebook->GetFont();
|
||||||
|
|
Loading…
Reference in New Issue