[pan] fix (post-ui): save message draft



commit 7b0b3fc129b9bf7ae1d01bd895ee0dbde3c6adbb
Author: Dominique Dumont <dod debian org>
Date:   Sun Mar 20 18:48:45 2022 +0100

    fix (post-ui): save message draft
    
    The logic with no_overwrite was broken.
    
    Moreover the double negative login (e.g «while (!(no_overwrite ||
    select_ok))») is hard to follow, so I've replaced this logic with 2
    variables that are more explicit:
    - need_overwrite
    - do_overwrite

 pan/gui/post-ui.cc | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/pan/gui/post-ui.cc b/pan/gui/post-ui.cc
index 0a5504b..718e768 100644
--- a/pan/gui/post-ui.cc
+++ b/pan/gui/post-ui.cc
@@ -1728,7 +1728,8 @@ PostUI :: save_draft ()
    std::string draft_filename;
    char* filename;
    GMimeMessage* msg;
-   bool no_overwrite = true;
+   bool do_overwrite = false;
+   bool need_overwrite = false;
    bool select_ok = false;
 
    gtk_dialog_set_default_response (GTK_DIALOG(d), GTK_RESPONSE_ACCEPT);
@@ -1749,7 +1750,7 @@ PostUI :: save_draft ()
 
           if (is_file_exist(draft_filename.c_str()))
           {
-              no_overwrite = true;
+              need_overwrite = true;
               GtkWidget * dialog_w = gtk_message_dialog_new (
                GTK_WINDOW(_root),
                GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -1765,25 +1766,28 @@ PostUI :: save_draft ()
               switch(gtk_dialog_run(GTK_DIALOG(dialog_w)))
               {
               case GTK_RESPONSE_OK:
-                  no_overwrite = false;
+                  do_overwrite = true;
                   break;
               case GTK_RESPONSE_NO:
-                  no_overwrite = true;
+                  do_overwrite = false;
                   break;
               default:
-                  no_overwrite = true;
+                  do_overwrite = false;
                   break;
               }
               gtk_widget_destroy (dialog_w);
           }
+          else {
+              need_overwrite = false;
+          }
         } else
       {
           select_ok = false;
       }
 
-     } while (!(no_overwrite || select_ok));
+     } while ( do_overwrite != need_overwrite );
 
-   if (!no_overwrite && select_ok)
+   if (do_overwrite == need_overwrite && select_ok)
     {
       errno = 0;
       std::ofstream o (filename);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]