Ticket #2111: allow pause in copy/move/delete file operation.
authorAndrew Borodin <aborodin@vmail.ru>
Thu, 22 Nov 2012 09:55:38 +0000 (22 13:55 +0400)
committerAndrew Borodin <aborodin@vmail.ru>
Fri, 21 Dec 2012 09:37:39 +0000 (21 13:37 +0400)
Initial step: if button callback retuns zero, don't close the dialog after
button press.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
lib/widget/button.c
lib/widget/button.h

index 0c1b5fc..4740f93 100644 (file)
@@ -59,7 +59,6 @@ button_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *
 {
     WButton *b = BUTTON (w);
     WDialog *h = w->owner;
-    int stop = 0;
     int off = 0;
 
     switch (msg)
@@ -94,13 +93,10 @@ button_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *
         if (parm != ' ' && parm != '\n')
             return MSG_NOT_HANDLED;
 
-        if (b->callback != NULL)
-            stop = b->callback (b, b->action);
-        if (b->callback == NULL || stop != 0)
-        {
-            h->ret_value = b->action;
+        h->ret_value = b->action;
+        if (b->callback == NULL || b->callback (b, b->action) != 0)
             dlg_stop (h);
-        }
+
         return MSG_HANDLED;
 
     case MSG_CURSOR:
index dccb2b2..f85be8b 100644 (file)
@@ -13,6 +13,7 @@
 struct WButton;
 
 /* button callback */
+/* return 0 to continue work with dialog, non-zero to close */
 typedef int (*bcback_fn) (struct WButton * button, int action);
 
 /*** enums ***************************************************************************************/