Properties: Fix handling of mixed value selections
This commit is contained in:
parent
5638122d3d
commit
890103a012
|
@ -227,6 +227,7 @@ void PROPERTIES_PANEL::rebuildProperties( const SELECTION& aSelection )
|
||||||
// Either determine the common value for a property or "<...>" to indicate multiple values
|
// Either determine the common value for a property or "<...>" to indicate multiple values
|
||||||
bool available = true;
|
bool available = true;
|
||||||
bool writeable = true;
|
bool writeable = true;
|
||||||
|
bool different = false;
|
||||||
wxVariant commonVal;
|
wxVariant commonVal;
|
||||||
|
|
||||||
for( EDA_ITEM* item : aSelection )
|
for( EDA_ITEM* item : aSelection )
|
||||||
|
@ -241,15 +242,20 @@ void PROPERTIES_PANEL::rebuildProperties( const SELECTION& aSelection )
|
||||||
if( !property->Writeable( item ) )
|
if( !property->Writeable( item ) )
|
||||||
writeable = false;
|
writeable = false;
|
||||||
|
|
||||||
wxVariant value = commonVal;
|
wxVariant value;
|
||||||
|
|
||||||
if( getItemValue( item, property, value ) )
|
if( getItemValue( item, property, value ) )
|
||||||
{
|
{
|
||||||
// Null value indicates different property values between items
|
// Null value indicates different property values between items
|
||||||
if( !commonVal.IsNull() && value != commonVal )
|
if( !different && !commonVal.IsNull() && value != commonVal )
|
||||||
|
{
|
||||||
|
different = true;
|
||||||
commonVal.MakeNull();
|
commonVal.MakeNull();
|
||||||
else
|
}
|
||||||
|
else if( !different )
|
||||||
|
{
|
||||||
commonVal = value;
|
commonVal = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -123,6 +123,7 @@ void PCB_PROPERTIES_PANEL::updatePropertyValues( const SELECTION& aSelection )
|
||||||
wxCHECK2( property, continue );
|
wxCHECK2( property, continue );
|
||||||
|
|
||||||
bool writeable = true;
|
bool writeable = true;
|
||||||
|
bool different = false;
|
||||||
wxVariant commonVal;
|
wxVariant commonVal;
|
||||||
|
|
||||||
for( EDA_ITEM* edaItem : aSelection )
|
for( EDA_ITEM* edaItem : aSelection )
|
||||||
|
@ -134,10 +135,15 @@ void PCB_PROPERTIES_PANEL::updatePropertyValues( const SELECTION& aSelection )
|
||||||
if( getItemValue( edaItem, property, value ) )
|
if( getItemValue( edaItem, property, value ) )
|
||||||
{
|
{
|
||||||
// Null value indicates different property values between items
|
// Null value indicates different property values between items
|
||||||
if( !commonVal.IsNull() && value != commonVal )
|
if( !different && !commonVal.IsNull() && value != commonVal )
|
||||||
|
{
|
||||||
|
different = true;
|
||||||
commonVal.MakeNull();
|
commonVal.MakeNull();
|
||||||
else
|
}
|
||||||
|
else if( !different )
|
||||||
|
{
|
||||||
commonVal = value;
|
commonVal = value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue