From 8fc3ab0c1492a562a2439a2907e73ed8870844ec Mon Sep 17 00:00:00 2001 From: petern Date: Tue, 1 Dec 2009 10:09:25 +0000 Subject: [PATCH] Add right click handler to matrix to allow connecting groups that are open git-svn-id: file:///home/vcs/svn/jsweeper/trunk@23 6611ac79-6612-48ef-a1e9-b906f853523e --- src/matrix.cpp | 54 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/src/matrix.cpp b/src/matrix.cpp index afc25cd..451373f 100644 --- a/src/matrix.cpp +++ b/src/matrix.cpp @@ -608,6 +608,7 @@ bool Matrix::on_button_press_event(GdkEventButton *event) if (p->rect.HitX(x)) p1 = p; if (p->rect.HitY(y)) p2 = p; + if (p1 != NULL && p2 != NULL) break; if (p1 != NULL && p2 != NULL) { pm.ToggleConnect(p1, p2); return true; @@ -617,18 +618,47 @@ bool Matrix::on_button_press_event(GdkEventButton *event) if (pg->rect.HitX(x)) pg1 = pg; if (pg->rect.HitY(y)) pg2 = pg; - if (p1 != NULL && pg2 != NULL) { - pm.ToggleConnect(p1, pg2); - return true; - } - if (pg1 != NULL && p2 != NULL) { - pm.ToggleConnect(pg1, p2); - return true; - } - if (pg1 != NULL && pg2 != NULL) { - pm.ToggleConnect(pg1, pg2); - return true; - } + if (pg1 != NULL && pg2 != NULL) break; + } + } + + if (event->button == 3) { + // Right button pressed + // Try groups first + if (pg1 != NULL && pg2 != NULL) { + pm.ToggleConnect(pg1, pg2); + return true; + } + if (pg1 != NULL && p2 != NULL) { + pm.ToggleConnect(pg1, p2); + return true; + } + if (p1 != NULL && pg2 != NULL) { + pm.ToggleConnect(p1, pg2); + return true; + } + if (p1 != NULL && p2 != NULL) { + pm.ToggleConnect(p1, p2); + return true; + } + } else if (event->button == 1) { + // Left button pressed + // Try ports first + if (p1 != NULL && p2 != NULL) { + pm.ToggleConnect(p1, p2); + return true; + } + if (p1 != NULL && pg2 != NULL) { + pm.ToggleConnect(p1, pg2); + return true; + } + if (pg1 != NULL && p2 != NULL) { + pm.ToggleConnect(pg1, p2); + return true; + } + if (pg1 != NULL && pg2 != NULL) { + pm.ToggleConnect(pg1, pg2); + return true; } }