[FIX] point_of_sale: onscreen keyboard would stop working when category changed ...
authorFrédéric van der Essen <fva@openerp.com>
Thu, 12 Sep 2013 15:13:34 +0000 (17:13 +0200)
committerFrédéric van der Essen <fva@openerp.com>
Thu, 12 Sep 2013 15:13:34 +0000 (17:13 +0200)
bzr revid: fva@openerp.com-20130912151334-c3kc4c4137amrl9f

addons/point_of_sale/static/src/js/screens.js
addons/point_of_sale/static/src/js/widget_keyboard.js
addons/point_of_sale/static/src/js/widgets.js

index 20253ff..975c7fc 100644 (file)
@@ -762,9 +762,6 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
             this.product_categories_widget.reset_category();
 
             this.pos_widget.order_widget.set_numpad_state(this.pos_widget.numpad.state);
-            if(this.pos.iface_vkeyboard){
-                this.pos_widget.onscreen_keyboard.connect();
-            }
 
             if(this.pos_widget.screen_selector.current_mode === 'client'){ 
                 this.add_action_button({
@@ -781,6 +778,9 @@ function openerp_pos_screens(instance, module){ //module is instance.point_of_sa
             this._super();
             this.pos_widget.order_widget.set_numpad_state(null);
             this.pos_widget.payment_screen.set_numpad_state(null);
+            if(this.pos.iface_vkeyboard && this.pos_widget.onscreen_keyboard){
+                this.pos_widget.onscreen_keyboard.hide();
+            }
         },
 
     });
index 2e683ed..05ccdd7 100644 (file)
@@ -27,9 +27,7 @@ function openerp_pos_keyboard(instance, module){ //module is instance.point_of_s
             }
 
             this.input_selector = options.input_selector || '.searchbox input';
-
-            //show the keyboard when the input zone is clicked.
-            $(this.input_selector).focus(function(){self.show();});
+            this.$target = null;
 
             //Keyboard state
             this.capslock = false;
@@ -37,14 +35,15 @@ function openerp_pos_keyboard(instance, module){ //module is instance.point_of_s
             this.numlock  = false;
         },
         
-        connect : function(){
+        connect : function($target){
             var self = this;
-            $(this.input_selector).focus(function(){self.show();});
+            this.$target = $target;
+            $target.focus(function(){self.show();});
         },
 
         // Write a character to the input zone
         writeCharacter: function(character){
-            var $input = $(this.input_selector);
+            var $input = this.$target
             $input[0].value += character;
             $input.keydown();
             $input.keyup();
@@ -56,7 +55,7 @@ function openerp_pos_keyboard(instance, module){ //module is instance.point_of_s
         
         // Removes the last character from the input zone.
         deleteCharacter: function(){
-            var $input = $(this.input_selector);
+            var $input = this.$target;
             var input_value = $input[0].value;
             $input[0].value = input_value.substr(0, input_value.length - 1);
             $input.keydown();
@@ -65,7 +64,7 @@ function openerp_pos_keyboard(instance, module){ //module is instance.point_of_s
         
         // Clears the content of the input zone.
         deleteAllCharacters: function(){
-            var $input = $(this.input_selector);
+            var $input = this.$target;
             $input[0].value = "";
             $input.keydown();
             $input.keyup();
index 24660ab..25fb58f 100644 (file)
@@ -541,6 +541,9 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa
                 self.renderElement();
                 self.search_and_categories(category);
             });
+            if(this.pos.iface_vkeyboard && this.pos_widget.onscreen_keyboard){
+                this.pos_widget.onscreen_keyboard.connect(this.$('.searchbox input'));
+            }
             this.search_and_categories();
         },