From 7644b1693ed06f1795bf5333b2ef5dec7f42993d Mon Sep 17 00:00:00 2001 From: mdipierro Date: Fri, 21 Dec 2012 00:17:08 -0600 Subject: [PATCH] fixed problem with - button in list widget, thanks howesc --- VERSION | 2 +- gluon/sqlhtml.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index 67f1a9fd..a8b12727 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.4.1-alpha.1+timestamp.2012.12.20.18.16.02 +Version 2.4.1-alpha.1+timestamp.2012.12.21.00.16.27 diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index dad281e4..9fc69e22 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -263,18 +263,27 @@ class ListWidget(StringWidget): jQuery.fn.grow_input = function() { return this.each(function() { var ul = this; - jQuery(ul).find(":text").after('+').keypress(function (e) { return (e.which == 13) ? pe(ul) : true; }).next().click(function(){ pe(ul) }); + jQuery(ul).find(":text").after('+ -').keypress(function (e) { return (e.which == 13) ? pe(ul, e) : true; }).next().click(function(e){ pe(ul, e) }).next().click(function(e){ rl(ul, e)}); }); }; function pe(ul, e) { var new_line = ml(ul); rel(ul); - new_line.appendTo(ul); + if ($(e.target).parent().is(':visible')) { + //make sure we didn't delete the element before we insert after + new_line.insertAfter($(e.target).parent()); + } else { + //the line we clicked on was deleted, just add to end of list + new_line.appendTo(ul); + } new_line.find(":text").focus(); return false; } function rl(ul, e) { - jQuery(e.target).parent().remove(); + if (jQuery(ul).children().length > 1) { + //only remove if we have more than 1 item so the list is never empty + $(e.target).parent().remove(); + } } function ml(ul) { var line = jQuery(ul).find("li:first").clone(true);