From 919b0c0cdc5decae4b8bd81b524e2e8f9ab2c099 Mon Sep 17 00:00:00 2001 From: "Mark R. Williams" Date: Wed, 18 May 2011 20:35:52 -0400 Subject: [PATCH] text_entry_minibuffer_state: better scrolling of default completion Since XULRunner 2.0, a change in nsITreeBoxObject.scrollToRow caused Conkeror's read-buffer completions list to scroll the completions in a less than helpful way, often leaving blank rows at the bottom of the list. This patch changes the update_completions_display method of text_entry_minibuffer_state to center the default completion (when there is one), but also ensure that no space is wasted on empty rows in the completions display. --- modules/minibuffer-read.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/minibuffer-read.js b/modules/minibuffer-read.js index 7752079..755e491 100644 --- a/modules/minibuffer-read.js +++ b/modules/minibuffer-read.js @@ -246,9 +246,14 @@ text_entry_minibuffer_state.prototype = { if (this.completions && this.completions.count > 0) { this.completions_display_element.view = this.completions_display_element.view; this.completions_display_element.setAttribute("collapsed", "false"); - this.completions_display_element.currentIndex = this.selected_completion_index; - this.completions_display_element.treeBoxObject.scrollToRow(this.selected_completion_index); + var max_display = this.completions_display_element.treeBoxObject.getPageLength(); + var mid_point = Math.floor(max_display / 2); + if (this.completions.count - this.selected_completion_index <= mid_point) + var pos = this.completions.count - max_display; + else + pos = Math.max(0, this.selected_completion_index - mid_point); + this.completions_display_element.treeBoxObject.scrollToRow(pos); } else { this.completions_display_element.setAttribute("collapsed", "true"); } -- 2.11.4.GIT