Browse Source

autocomplete select event patch

Signed-off-by: bachy <git@g-u-i.net>
bachy 12 years ago
parent
commit
3a3a620cac
2 changed files with 33 additions and 2 deletions
  1. 30 0
      ac_select_event-365241-54.patch
  2. 3 2
      misc/autocomplete.js

+ 30 - 0
ac_select_event-365241-54.patch

@@ -0,0 +1,30 @@
+diff --git a/misc/autocomplete.js b/misc/autocomplete.js
+index 8f7ac60..5679081 100644
+--- a/misc/autocomplete.js
++++ b/misc/autocomplete.js
+@@ -114,6 +114,7 @@ Drupal.jsAC.prototype.onkeyup = function (input, e) {
+  */
+ Drupal.jsAC.prototype.select = function (node) {
+   this.input.value = $(node).data('autocompleteValue');
++  $(this.input).trigger('autocompleteSelect', [node]);
+ };
+ 
+ /**
+@@ -167,7 +168,7 @@ Drupal.jsAC.prototype.unhighlight = function (node) {
+ Drupal.jsAC.prototype.hidePopup = function (keycode) {
+   // Select item if the right key or mousebutton was pressed.
+   if (this.selected && ((keycode && keycode != 46 && keycode != 8 && keycode != 27) || !keycode)) {
+-    this.input.value = $(this.selected).data('autocompleteValue');
++    this.select(this.selected);
+   }
+   // Hide popup.
+   var popup = this.popup;
+@@ -220,7 +221,7 @@ Drupal.jsAC.prototype.found = function (matches) {
+   for (key in matches) {
+     $('<li></li>')
+       .html($('<div></div>').html(matches[key]))
+-      .mousedown(function () { ac.select(this); })
++      .mousedown(function () { ac.hidePopup(this); })
+       .mouseover(function () { ac.highlight(this); })
+       .mouseout(function () { ac.unhighlight(this); })
+       .data('autocompleteValue', key)

+ 3 - 2
misc/autocomplete.js

@@ -114,6 +114,7 @@ Drupal.jsAC.prototype.onkeyup = function (input, e) {
  */
 Drupal.jsAC.prototype.select = function (node) {
   this.input.value = $(node).data('autocompleteValue');
+  $(this.input).trigger('autocompleteSelect', [node]);
 };
 
 /**
@@ -167,7 +168,7 @@ Drupal.jsAC.prototype.unhighlight = function (node) {
 Drupal.jsAC.prototype.hidePopup = function (keycode) {
   // Select item if the right key or mousebutton was pressed.
   if (this.selected && ((keycode && keycode != 46 && keycode != 8 && keycode != 27) || !keycode)) {
-    this.input.value = $(this.selected).data('autocompleteValue');
+    this.select(this.selected);
   }
   // Hide popup.
   var popup = this.popup;
@@ -220,7 +221,7 @@ Drupal.jsAC.prototype.found = function (matches) {
   for (key in matches) {
     $('<li></li>')
       .html($('<div></div>').html(matches[key]))
-      .mousedown(function () { ac.select(this); })
+      .mousedown(function () { ac.hidePopup(this); })
       .mouseover(function () { ac.highlight(this); })
       .mouseout(function () { ac.unhighlight(this); })
       .data('autocompleteValue', key)