X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=psjt.org; s=psjt01; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID: Date:Subject:To:From:Sender:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=/hRXZi7zOfm0ZYXXJoddAEnLcS5YL3Mxa8VGREKzXwI=; b=BDG4MWPcFsU3d7XenytIQXuCVz EwtgjeEw1bIFFGJctHYFJ73BW4cUUM3GYUCW/NdAxoY1inRYRlDV+IjlqncOZXFuhAya6O5dGdMG+ ZsaaHBetvcdhe4flUbB1QPsD8YICeYNcDJvGZeJz7vEXEBvMXhm6IFN5F9rIKGGbSza5bGu3Op/9W jhDPQcUGymhETx9OjC6sjQuQjy7YUOhdDLIjTGKjUZTe06GckeaVtreu9bR7cDcrR1Bgy9e6cHdFi aQmsREW+5XLs2S35hZaSzQITy+u6/OBgoC03KQEKj6NgKh2FTWfnysAVriKI6M4sq6HJPpUYc8ip0 XFkSPUZA==; From: "=?utf-8?Q?Stephan_B=C3=B6ttcher?= (geda AT psjt DOT org) [via geda-user AT delorie DOT com]" To: geda-user AT delorie DOT com Subject: [geda-user] pcb SaveMode Date: Wed, 08 Jun 2022 11:42:43 +0200 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id 2589gk40016628 Reply-To: geda-user AT delorie DOT com Moin, in PCB when I use the Rotate mode and use the middle mouse to move the rotated object, for the first couple of times the Rotate mode will be switched off. After a while it sticks. Since the edit sessions are typically long, I could live with this. Today I tried to get to the bottom of it, got a fresh git pull (via http://, git:// failed) and looked through the source, added a few fprintf()s and got: SaveMode in case F_Stroke SaveMode: position 1 SaveMode in click_cb SaveMode: position 2 RestoreMode: position 1 SaveMode in case F_Stroke SaveMode: position 2 SaveMode in click_cb SaveMode: position 3 RestoreMode: position 2 Whenever I use the middle mouse button, there are two Save and one Restore. Eventually, the save stack is full, from that point it works as intended. It will obviously not harm to make the save stack smaller, or omit the SaveMode() in F_Stroke, to work around the problem. Any ideas how to fix this properly? Gruß, Stephan diff --git a/src/action.c b/src/action.c index 9b7b9ca7..69628d31 100644 --- a/src/action.c +++ b/src/action.c @@ -617,12 +617,14 @@ click_cb (hidval hv) AddSelectedToBuffer (PASTEBUFFER, Note.X, Note.Y, true); SaveUndoSerialNumber (); RemoveSelected (); + fprintf(stderr, "SaveMode in click_cb\n"); SaveMode (); saved_mode = true; SetMode (PASTEBUFFER_MODE); } else if (Note.Hit && !gui->shift_is_pressed ()) { + fprintf(stderr, "SaveMode in click_cb\n"); SaveMode (); saved_mode = true; SetMode (gui->control_is_pressed ()? COPY_MODE : MOVE_MODE); @@ -3212,6 +3214,7 @@ ActionMode (int argc, char **argv, Coord x, Coord y) SetMode (POLYGON_MODE); else { + fprintf(stderr, "SaveMode in case F_Stroke\n"); SaveMode (); saved_mode = true; SetMode (ARROW_MODE); @@ -3234,6 +3237,7 @@ ActionMode (int argc, char **argv, Coord x, Coord y) break; case F_Save: /* save currently selected mode */ + fprintf(stderr, "SaveMode in case F_Save\n"); SaveMode (); break; } @@ -3859,6 +3863,7 @@ ActionDelete (int argc, char **argv, Coord x, Coord y) switch (id) { case F_Object: + fprintf(stderr, "SaveMode in case F_Object\n"); SaveMode(); SetMode(REMOVE_MODE); NotifyMode(); diff --git a/src/set.c b/src/set.c index 19dd1a6a..243a8f68 100644 --- a/src/set.c +++ b/src/set.c @@ -212,6 +212,7 @@ SaveMode (void) mode_stack[mode_position] = Settings.Mode; if (mode_position < MAX_MODESTACK_DEPTH - 1) mode_position++; + fprintf(stderr, "SaveMode: position %d\n", mode_position); } /*! @@ -226,6 +227,7 @@ RestoreMode (void) return; } SetMode (mode_stack[--mode_position]); + fprintf(stderr, "RestoreMode: position %d\n", mode_position); } -- Stephan