summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--freecell.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/freecell.c b/freecell.c
index 487ef79..d50b641 100644
--- a/freecell.c
+++ b/freecell.c
@@ -191,16 +191,22 @@ static bool keyDown(SDL_KeyboardEvent key) {
 
 static bool mouseButtonDown(SDL_MouseButtonEvent button) {
 	struct SDL_Point point = { button.x, button.y };
+	struct Item *item = listFind(&layout.main, &point);
 
-	if (layout.dragItem.card) {
-		if (button.clicks % 2 == 0) {
-			for (uint dest = Cell1; dest <= Cell4; ++dest) {
-				if (gameMove(dest, layout.dragItem.card)) {
-					layout.dragItem.card = 0;
-					return true;
-				}
-			}
+	if (button.clicks % 2 == 0) {
+		Card card = layout.dragItem.card;
+		if (!card) {
+			if (!item) return false;
+			card = item->card;
 		}
+		for (uint dest = Cell1; dest <= Cell4; ++dest) {
+			if (gameMove(dest, card)) break;
+		}
+		layout.dragItem.card = 0;
+		return true;
+	}
+
+	if (layout.dragItem.card) {
 		for (uint dest = 0; dest < StacksLen; ++dest) {
 			if (SDL_PointInRect(&point, &stackRects[dest])) {
 				if (gameMove(dest, layout.dragItem.card)) break;
@@ -211,7 +217,6 @@ static bool mouseButtonDown(SDL_MouseButtonEvent button) {
 	}
 
 	// TODO: Right click to reveal?
-	struct Item *item = listFind(&layout.main, &point);
 	if (!item) return false;
 	if (!gameAvail(item->card)) return false;
 	layout.dragItem = *item;
10:03:59 -0400'>2022-09-09Add I've Got a Time BombJune McEnroe 2022-09-02Update "Care" with initial electrolysis reportJune McEnroe 2022-08-17Add The Book of Form and EmptinessJune McEnroe 2022-08-15Load dates from ~/.config/when/datesJune McEnroe 2022-08-15Allow names with prefixes of months and daysJune McEnroe 2022-08-15Add named dates to whenJune McEnroe 2022-08-14Remove tweets text fileJune McEnroe 2022-08-04Add Conversations With FriendsJune McEnroe 2022-07-30Add Normal PeopleJune McEnroe 2022-07-26Rewrite glitch from new pngoJune McEnroe 2022-07-26Update Care with time-to-ID and piercingsJune McEnroe 2022-07-26Add -w to upJune McEnroe 2022-07-13Set push.autoSetupRemoteJune McEnroe 2022-07-08Remove TOURJune McEnroe 2022-07-03Add The Bone Shard EmperorJune McEnroe 2022-06-25Bump xterm font size to 12June McEnroe 2022-06-10Handle subshells (and functions) inside substitutionsJune McEnroe 2022-06-10Switch to jorts Install scriptJune McEnroe 2022-06-08Indicate if still reading or no resultsJune McEnroe 2022-06-08Add Maiden, Mother, CroneJune McEnroe 2022-06-05FIRST SHOW IN 2.5 YEARS BABEY!!!June McEnroe 2022-06-03Set line number on File linesJune McEnroe 2022-06-03Stop polling stdin after EOFJune McEnroe 2022-06-02Set TABSIZE=4June McEnroe 2022-06-02Do basic match highlightingJune McEnroe 2022-06-02Clean up parsing a littleJune McEnroe 2022-06-02Don't duplicate path stringJune McEnroe 2022-06-02Use stderr instead of /dev/tty, realloc buffer if lines too longJune McEnroe 2022-06-02Add initial working version of qfJune McEnroe 2022-05-29Set prompt for okshJune McEnroe