← Back to team overview

kicad-developers team mailing list archive

[PATCH] Display pin/entry targets while moving part

 

This patch displays pin and bus entry targets while they are being 
moved, as they are also dangling then (even though the dangling status 
has not been updated). This seems to make the interface feel a bit more 
responsive, IMO.

--
Chris

commit e2ac9aaff17da3e8cdf3bfb5a698194eb8216d9d
Author: Chris Pavlina <cpavlin1@xxxxxxxxxxxxxx>
Date:   Sun Jun 14 15:24:47 2015 -0400

    Display pin targets while dragging components and bus entries

diff --git a/eeschema/sch_bus_entry.cpp b/eeschema/sch_bus_entry.cpp
index 6b3e3b6..b26d5d6 100644
--- a/eeschema/sch_bus_entry.cpp
+++ b/eeschema/sch_bus_entry.cpp
@@ -195,11 +195,15 @@ void SCH_BUS_ENTRY_BASE::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint&
     GRLine( clipbox, aDC, m_pos.x + aOffset.x, m_pos.y + aOffset.y,
             m_End().x + aOffset.x, m_End().y + aOffset.y, GetPenSize(), color );
 
-    if( m_isDanglingStart ) {
+
+    // Draw pin targets if part is being dragged
+    bool dragging = ( aPanel->GetScreen()->GetCurItem() == this );
+
+    if( m_isDanglingStart || dragging ) {
         GRCircle( clipbox, aDC, m_pos.x + aOffset.x, m_pos.y + aOffset.y, TARGET_BUSENTRY_RADIUS, 0, color );
     }
 
-    if( m_isDanglingEnd ) {
+    if( m_isDanglingEnd || dragging ) {
         GRCircle( clipbox, aDC, m_End().x + aOffset.x, m_End().y + aOffset.y, TARGET_BUSENTRY_RADIUS, 0, color );
     }
 }
diff --git a/eeschema/sch_component.cpp b/eeschema/sch_component.cpp
index dbe2f81..44763d5 100644
--- a/eeschema/sch_component.cpp
+++ b/eeschema/sch_component.cpp
@@ -350,8 +350,11 @@ void SCH_COMPONENT::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOff
 {
     if( PART_SPTR part = m_part.lock() )
     {
+        // Draw pin targets if part is being dragged
+        bool dragging = ( aPanel->GetScreen()->GetCurItem() == this );
+
         part->Draw( aPanel, aDC, m_Pos + aOffset, m_unit, m_convert, aDrawMode, aColor,
-                    m_transform, aDrawPinText, false, false, &m_isDangling );
+                    m_transform, aDrawPinText, false, false, dragging ? NULL : &m_isDangling );
     }
     else    // Use dummy() part if the actual cannot be found.
     {

Follow ups