зеркало из https://github.com/mozilla/gecko-dev.git
Bug 413497 - Awesome bar should use a throbber to provide feedback that search is in progress. r=mano, ui-r=beltzner, a1.9=damons
This commit is contained in:
Родитель
5d29ee53d7
Коммит
cc705d0635
|
@ -23,6 +23,11 @@ toolbar[printpreview="true"] {
|
||||||
-moz-binding: url("chrome://browser/content/urlbarBindings.xml#urlbar-rich-result-popup");
|
-moz-binding: url("chrome://browser/content/urlbarBindings.xml#urlbar-rich-result-popup");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#urlbar-throbber:not([busy="true"]),
|
||||||
|
#urlbar-throbber[busy="true"] + #page-proxy-favicon {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* ::::: Unified Back-/Forward Button ::::: */
|
/* ::::: Unified Back-/Forward Button ::::: */
|
||||||
#back-forward-dropmarker > image ,
|
#back-forward-dropmarker > image ,
|
||||||
#back-forward-dropmarker > label {
|
#back-forward-dropmarker > label {
|
||||||
|
|
|
@ -75,9 +75,7 @@ var gLastBrowserCharset = null;
|
||||||
var gPrevCharset = null;
|
var gPrevCharset = null;
|
||||||
var gURLBar = null;
|
var gURLBar = null;
|
||||||
var gFindBar = null;
|
var gFindBar = null;
|
||||||
var gProxyButton = null;
|
|
||||||
var gProxyFavIcon = null;
|
var gProxyFavIcon = null;
|
||||||
var gProxyDeck = null;
|
|
||||||
var gNavigatorBundle = null;
|
var gNavigatorBundle = null;
|
||||||
var gIsLoadingBlank = false;
|
var gIsLoadingBlank = false;
|
||||||
var gLastValidURLStr = "";
|
var gLastValidURLStr = "";
|
||||||
|
@ -2108,6 +2106,28 @@ function UpdateUrlbarSearchSplitterState()
|
||||||
splitter.parentNode.removeChild(splitter);
|
splitter.parentNode.removeChild(splitter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var LocationBarHelpers = {
|
||||||
|
_timeoutID: null,
|
||||||
|
|
||||||
|
_searchBegin: function LocBar_searchBegin() {
|
||||||
|
function delayedBegin(self) {
|
||||||
|
self._timeoutID = null;
|
||||||
|
document.getElementById("urlbar-throbber").setAttribute("busy", "true");
|
||||||
|
}
|
||||||
|
|
||||||
|
this._timeoutID = setTimeout(delayedBegin, 500, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
_searchComplete: function LocBar_searchComplete() {
|
||||||
|
// Did we finish the search before delayedBegin was invoked?
|
||||||
|
if (this._timeoutID) {
|
||||||
|
clearTimeout(this._timeoutID);
|
||||||
|
this._timeoutID = null;
|
||||||
|
}
|
||||||
|
document.getElementById("urlbar-throbber").removeAttribute("busy");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
function UpdatePageProxyState()
|
function UpdatePageProxyState()
|
||||||
{
|
{
|
||||||
if (gURLBar && gURLBar.value != gLastValidURLStr)
|
if (gURLBar && gURLBar.value != gLastValidURLStr)
|
||||||
|
@ -2119,15 +2139,11 @@ function SetPageProxyState(aState)
|
||||||
if (!gURLBar)
|
if (!gURLBar)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!gProxyButton)
|
|
||||||
gProxyButton = document.getElementById("page-proxy-button");
|
|
||||||
if (!gProxyFavIcon)
|
if (!gProxyFavIcon)
|
||||||
gProxyFavIcon = document.getElementById("page-proxy-favicon");
|
gProxyFavIcon = document.getElementById("page-proxy-favicon");
|
||||||
if (!gProxyDeck)
|
|
||||||
gProxyDeck = document.getElementById("page-proxy-deck");
|
|
||||||
|
|
||||||
gURLBar.setAttribute("pageproxystate", aState);
|
gURLBar.setAttribute("pageproxystate", aState);
|
||||||
gProxyButton.setAttribute("pageproxystate", aState);
|
gProxyFavIcon.setAttribute("pageproxystate", aState);
|
||||||
|
|
||||||
// the page proxy state is set to valid via OnLocationChange, which
|
// the page proxy state is set to valid via OnLocationChange, which
|
||||||
// gets called when we switch tabs.
|
// gets called when we switch tabs.
|
||||||
|
@ -2151,21 +2167,17 @@ function PageProxySetIcon (aURL)
|
||||||
PageProxyClearIcon();
|
PageProxyClearIcon();
|
||||||
else if (gProxyFavIcon.getAttribute("src") != aURL)
|
else if (gProxyFavIcon.getAttribute("src") != aURL)
|
||||||
gProxyFavIcon.setAttribute("src", aURL);
|
gProxyFavIcon.setAttribute("src", aURL);
|
||||||
else if (gProxyDeck.selectedIndex != 1)
|
|
||||||
gProxyDeck.selectedIndex = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function PageProxyClearIcon ()
|
function PageProxyClearIcon ()
|
||||||
{
|
{
|
||||||
if (gProxyDeck.selectedIndex != 0)
|
gProxyFavIcon.removeAttribute("src");
|
||||||
gProxyDeck.selectedIndex = 0;
|
|
||||||
if (gProxyFavIcon.hasAttribute("src"))
|
|
||||||
gProxyFavIcon.removeAttribute("src");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function PageProxyDragGesture(aEvent)
|
function PageProxyDragGesture(aEvent)
|
||||||
{
|
{
|
||||||
if (gProxyButton.getAttribute("pageproxystate") == "valid") {
|
if (gProxyFavIcon.getAttribute("pageproxystate") == "valid") {
|
||||||
nsDragAndDrop.startDrag(aEvent, proxyIconDNDObserver);
|
nsDragAndDrop.startDrag(aEvent, proxyIconDNDObserver);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -3123,9 +3135,7 @@ function BrowserToolboxCustomizeDone(aToolboxChanged)
|
||||||
// Update global UI elements that may have been added or removed
|
// Update global UI elements that may have been added or removed
|
||||||
if (aToolboxChanged) {
|
if (aToolboxChanged) {
|
||||||
gURLBar = document.getElementById("urlbar");
|
gURLBar = document.getElementById("urlbar");
|
||||||
gProxyButton = document.getElementById("page-proxy-button");
|
|
||||||
gProxyFavIcon = document.getElementById("page-proxy-favicon");
|
gProxyFavIcon = document.getElementById("page-proxy-favicon");
|
||||||
gProxyDeck = document.getElementById("page-proxy-deck");
|
|
||||||
gHomeButton.updateTooltip();
|
gHomeButton.updateTooltip();
|
||||||
gIdentityHandler._cacheElements();
|
gIdentityHandler._cacheElements();
|
||||||
window.XULBrowserWindow.init();
|
window.XULBrowserWindow.init();
|
||||||
|
|
|
@ -307,6 +307,8 @@
|
||||||
ontextentered="return handleURLBarCommand(param);"
|
ontextentered="return handleURLBarCommand(param);"
|
||||||
ontextreverted="return handleURLBarRevert();"
|
ontextreverted="return handleURLBarRevert();"
|
||||||
pageproxystate="invalid"
|
pageproxystate="invalid"
|
||||||
|
onsearchbegin="LocationBarHelpers._searchBegin();"
|
||||||
|
onsearchcomplete="LocationBarHelpers._searchComplete();"
|
||||||
onfocus="document.getElementById('identity-box').style.MozUserFocus= 'normal'"
|
onfocus="document.getElementById('identity-box').style.MozUserFocus= 'normal'"
|
||||||
onblur="document.getElementById('identity-box').style.MozUserFocus = 'ignore';">
|
onblur="document.getElementById('identity-box').style.MozUserFocus = 'ignore';">
|
||||||
<!-- Use onclick instead of normal popup= syntax since the popup
|
<!-- Use onclick instead of normal popup= syntax since the popup
|
||||||
|
@ -317,18 +319,14 @@
|
||||||
onclick="getIdentityHandler().handleIdentityButtonEvent(event);"
|
onclick="getIdentityHandler().handleIdentityButtonEvent(event);"
|
||||||
onkeypress="getIdentityHandler().handleIdentityButtonEvent(event);">
|
onkeypress="getIdentityHandler().handleIdentityButtonEvent(event);">
|
||||||
<hbox align="center">
|
<hbox align="center">
|
||||||
<deck id="page-proxy-deck" onclick="PageProxyClickHandler(event);">
|
<stack id="page-proxy-stack"
|
||||||
<image id="page-proxy-button"
|
onclick="PageProxyClickHandler(event);"
|
||||||
ondraggesture="PageProxyDragGesture(event);"
|
tooltiptext="&proxyIcon.tooltip;">
|
||||||
tooltiptext="&proxyIcon.tooltip;"/>
|
<image id="urlbar-throbber" busy="false"/>
|
||||||
<image id="page-proxy-favicon" validate="never"
|
<image id="page-proxy-favicon" validate="never"
|
||||||
ondraggesture="PageProxyDragGesture(event);"
|
ondraggesture="PageProxyDragGesture(event);"
|
||||||
onload="this.parentNode.selectedIndex = 1;
|
onerror="this.removeAttribute('src');"/>
|
||||||
event.stopPropagation();"
|
</stack>
|
||||||
onerror="this.removeAttribute('src');
|
|
||||||
this.parentNode.selectedIndex = 0;"
|
|
||||||
tooltiptext="&proxyIcon.tooltip;"/>
|
|
||||||
</deck>
|
|
||||||
<label id="identity-icon-label"/>
|
<label id="identity-icon-label"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</box>
|
</box>
|
||||||
|
|
|
@ -814,28 +814,28 @@ toolbar[iconsize="small"] #paste-button[disabled="true"] {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Favicon */
|
/* Favicon */
|
||||||
#page-proxy-deck,
|
#page-proxy-stack,
|
||||||
#page-proxy-favicon,
|
#page-proxy-favicon,
|
||||||
#page-proxy-button {
|
#urlbar-throbber {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-deck {
|
#page-proxy-stack {
|
||||||
margin: 2px 3px;
|
margin: 2px 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-favicon {
|
#page-proxy-favicon:not([src]) {
|
||||||
list-style-image: none;
|
list-style-image: url("chrome://global/skin/icons/folder-item.png");
|
||||||
|
-moz-image-region: rect(0px, 16px, 16px, 0px);
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-button {
|
#page-proxy-favicon[pageproxystate="invalid"] {
|
||||||
list-style-image: url("chrome://global/skin/icons/folder-item.png") !important;
|
-moz-image-region: rect(16px, 16px, 32px, 0px);
|
||||||
-moz-image-region: rect(0px, 16px, 16px, 0px);}
|
}
|
||||||
|
|
||||||
#page-proxy-button[pageproxystate="invalid"] {
|
#urlbar-throbber {
|
||||||
cursor: default;
|
list-style-image: url("chrome://global/skin/throbber/Throbber-small.gif");
|
||||||
-moz-image-region: rect(16px, 16px, 32px, 0px) !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Identity indicator */
|
/* Identity indicator */
|
||||||
|
|
|
@ -652,36 +652,36 @@ toolbar[mode="icons"] #forward-button[open="true"] {
|
||||||
|
|
||||||
/* ----- PAGE PROXY ICON ----- */
|
/* ----- PAGE PROXY ICON ----- */
|
||||||
|
|
||||||
#page-proxy-deck,
|
#page-proxy-stack,
|
||||||
#page-proxy-favicon,
|
#page-proxy-favicon,
|
||||||
#page-proxy-button {
|
#urlbar-throbber {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-deck {
|
#page-proxy-stack {
|
||||||
-moz-margin-start: 11px;
|
-moz-margin-start: 11px;
|
||||||
margin-bottom: 1px;
|
margin-bottom: 1px;
|
||||||
opacity: 1.0;
|
opacity: 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-favicon {
|
#page-proxy-favicon:not([src]) {
|
||||||
list-style-image: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#page-proxy-button {
|
|
||||||
list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.png");
|
list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-button[pageproxystate="invalid"] {
|
#page-proxy-favicon[pageproxystate="invalid"] {
|
||||||
cursor: default;
|
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
#identity-box:active > #page-proxy-deck,
|
#urlbar-throbber {
|
||||||
#identity-box[open="true"] > #page-proxy-deck {
|
list-style-image: url("chrome://global/skin/icons/loading_16.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#identity-box:active > #page-proxy-stack,
|
||||||
|
#identity-box[open="true"] > #page-proxy-stack {
|
||||||
opacity: 0.75;
|
opacity: 0.75;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1363,8 +1363,8 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
|
||||||
-moz-box-pack: center;
|
-moz-box-pack: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
#identity-box.verifiedIdentity > hbox > #page-proxy-deck,
|
#identity-box.verifiedIdentity > hbox > #page-proxy-stack,
|
||||||
#identity-box.verifiedDomain > hbox > #page-proxy-deck {
|
#identity-box.verifiedDomain > hbox > #page-proxy-stack {
|
||||||
-moz-margin-start: 0;
|
-moz-margin-start: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1007,28 +1007,28 @@ toolbar[iconsize="small"] #paste-button:not([disabled="true"]):hover:active {
|
||||||
|
|
||||||
/* ::::: page proxy icon ::::: */
|
/* ::::: page proxy icon ::::: */
|
||||||
|
|
||||||
#page-proxy-deck,
|
#page-proxy-stack,
|
||||||
#page-proxy-favicon,
|
#page-proxy-favicon,
|
||||||
#page-proxy-button {
|
#urlbar-throbber {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-deck {
|
#page-proxy-stack {
|
||||||
margin: 2px 3px;
|
margin: 2px 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-favicon {
|
#page-proxy-favicon:not([src]) {
|
||||||
list-style-image: none;
|
list-style-image: url("chrome://global/skin/icons/folder-item.png");
|
||||||
|
-moz-image-region: rect(0px, 16px, 16px, 0px)
|
||||||
}
|
}
|
||||||
|
|
||||||
#page-proxy-button {
|
#page-proxy-favicon[pageproxystate="invalid"] {
|
||||||
list-style-image: url("chrome://global/skin/icons/folder-item.png") !important;
|
-moz-image-region: rect(32px, 16px, 48px, 0px);
|
||||||
-moz-image-region: rect(0px, 16px, 16px, 0px);}
|
}
|
||||||
|
|
||||||
#page-proxy-button[pageproxystate="invalid"] {
|
#urlbar-throbber {
|
||||||
cursor: default;
|
list-style-image: url("chrome://global/skin/throbber/Throbber-small.gif");
|
||||||
-moz-image-region: rect(32px, 16px, 48px, 0px) !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче