blob: 977b0ad149b18dd805db843b8ce02dc55dc40a3b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
diff --git a/src/boxsidehub.cpp b/src/boxsidehub.cpp
index 4dfb460..b4cbf0d 100644
--- a/src/boxsidehub.cpp
+++ b/src/boxsidehub.cpp
@@ -51,10 +51,15 @@ static bool
itemLessThan(const ConnectorRealPair &a, const ConnectorRealPair &b)
{
int r = cmpAngle(a.second, b.second);
- if (r == 0) {
+ if (r != 0)
+ return r < 0;
+ r = a.first->isStart() - b.first->isStart();
+ if (r != 0)
+ return r > 0;
+ if (a.first->isStart())
return a.first->owner() < b.first->owner();
- }
- return r < 0;
+ else
+ return a.first->owner() > b.first->owner();
}
// |
diff --git a/src/connector.cpp b/src/connector.cpp
index bbd7580..bf85ed0 100644
--- a/src/connector.cpp
+++ b/src/connector.cpp
@@ -82,6 +82,12 @@ Connector::isConnected() const
return m_hub;
}
+bool
+Connector::isStart()
+{
+ return this==owner()->connector(0);
+}
+
DiagramObject *
Connector::connectedObject() const
{
diff --git a/src/connector.h b/src/connector.h
index 66e2b1a..ee2ecb6 100644
--- a/src/connector.h
+++ b/src/connector.h
@@ -37,6 +37,8 @@ public:
bool isConnected() const;
DiagramObject *connectedObject() const;
+ bool isStart();
+
Connector *otherEnd() const;
Hub *hub() const;
|