SCH_GLOBALLABEL: fix broken position of IREF, creating a broken bounding box.
Note also the bounding box is too large when the IREF is not shown, because IREF is always included, even if not shown. Fixes #7864 https://gitlab.com/kicad/code/kicad/issues/7864
This commit is contained in:
parent
068e85c567
commit
d295b5d6de
|
@ -1105,7 +1105,7 @@ void SCH_GLOBALLABEL::UpdateIntersheetRefProps()
|
||||||
void SCH_GLOBALLABEL::AutoplaceFields( SCH_SCREEN* aScreen, bool aManual )
|
void SCH_GLOBALLABEL::AutoplaceFields( SCH_SCREEN* aScreen, bool aManual )
|
||||||
{
|
{
|
||||||
int margin = GetTextOffset();
|
int margin = GetTextOffset();
|
||||||
int labelLen = GetBoundingBox().GetSizeMax();
|
int labelLen = GetBoundingBoxBase().GetSizeMax();
|
||||||
int penOffset = GetPenWidth() / 2;
|
int penOffset = GetPenWidth() / 2;
|
||||||
|
|
||||||
// Set both axes to penOffset; we're going to overwrite the text axis below
|
// Set both axes to penOffset; we're going to overwrite the text axis below
|
||||||
|
@ -1296,8 +1296,10 @@ void SCH_GLOBALLABEL::CreateGraphicShape( const RENDER_SETTINGS* aRenderSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const
|
const EDA_RECT SCH_GLOBALLABEL::GetBoundingBoxBase() const
|
||||||
{
|
{
|
||||||
|
// build the bounding box on the global label only, without taking in account
|
||||||
|
// the intersheets references, just the bounding box of the graphic shape
|
||||||
int x = GetTextPos().x;
|
int x = GetTextPos().x;
|
||||||
int y = GetTextPos().y;
|
int y = GetTextPos().y;
|
||||||
int penWidth = GetEffectiveTextPenWidth();
|
int penWidth = GetEffectiveTextPenWidth();
|
||||||
|
@ -1339,6 +1341,18 @@ const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const
|
||||||
|
|
||||||
EDA_RECT box( wxPoint( x, y ), wxSize( dx, dy ) );
|
EDA_RECT box( wxPoint( x, y ), wxSize( dx, dy ) );
|
||||||
|
|
||||||
|
box.Normalize();
|
||||||
|
return box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const EDA_RECT SCH_GLOBALLABEL::GetBoundingBox() const
|
||||||
|
{
|
||||||
|
// build the bounding box on the global label only, including the intersheets references
|
||||||
|
// full bounding box
|
||||||
|
|
||||||
|
EDA_RECT box( GetBoundingBoxBase() );
|
||||||
|
|
||||||
box.Merge( m_intersheetRefsField.GetBoundingBox() );
|
box.Merge( m_intersheetRefsField.GetBoundingBox() );
|
||||||
|
|
||||||
box.Normalize();
|
box.Normalize();
|
||||||
|
|
|
@ -413,6 +413,15 @@ public:
|
||||||
|
|
||||||
wxPoint GetSchematicTextOffset( const RENDER_SETTINGS* aSettings ) const override;
|
wxPoint GetSchematicTextOffset( const RENDER_SETTINGS* aSettings ) const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the bounding box on the global label only, without taking in account
|
||||||
|
* the intersheets references
|
||||||
|
*/
|
||||||
|
const EDA_RECT GetBoundingBoxBase() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the bounding box on the global label only, including the intersheets references
|
||||||
|
*/
|
||||||
const EDA_RECT GetBoundingBox() const override;
|
const EDA_RECT GetBoundingBox() const override;
|
||||||
|
|
||||||
void CreateGraphicShape( const RENDER_SETTINGS* aRenderSettings,
|
void CreateGraphicShape( const RENDER_SETTINGS* aRenderSettings,
|
||||||
|
|
Loading…
Reference in New Issue