Bug 851130 - Repush misc. code cleanup and added support for bcast_preciseInput and bcast_windowState in start tabs. (First push was empty.) r=me

This commit is contained in:
Jim Mathies 2013-08-09 04:57:36 -05:00
parent 5c66e4fd09
commit 1ff21471de
2 changed files with 56 additions and 7 deletions

View File

@ -32,6 +32,12 @@
<script type="application/javascript" src="chrome://browser/content/startui-scripts.js"/>
<!-- mimic broadcasts in browser.xul. note browser.xul broadcasters do not propagate down here! -->
<broadcasterset id="broadcasterset">
<broadcaster id="bcast_preciseInput" input="precise"/>
<broadcaster id="bcast_windowState" viewstate=""/>
</broadcasterset>
<hbox id="start-container" flex="1" observes="bcast_windowState" class="meta content-height content-width">
<scrollbox id="start-scrollbox" observes="bcast_preciseInput" flex="1">
<vbox id="start-topsites" class="meta-section" expanded="true">

View File

@ -9,10 +9,15 @@ Cu.import("resource://gre/modules/Services.jsm");
var StartUI = {
get startUI() { return document.getElementById("start-container"); },
get maxResultsPerSection() {
get maxResultsPerSection() {
return Services.prefs.getIntPref("browser.display.startUI.maxresults");
},
get chromeWin() {
// XXX Not e10s friendly. We use this in a few places.
return Services.wm.getMostRecentWindow('navigator:browser');
},
init: function init() {
this.startUI.addEventListener("contextmenu", this, false);
this.startUI.addEventListener("click", this, false);
@ -27,6 +32,10 @@ var StartUI = {
BookmarksStartView.show();
HistoryStartView.show();
RemoteTabsStartView.show();
this.chromeWin.addEventListener("MozPrecisePointer", this, true);
this.chromeWin.addEventListener("MozImprecisePointer", this, true);
Services.obs.addObserver(this, "metro_viewstate_changed", false);
},
uninit: function() {
@ -38,11 +47,12 @@ var StartUI = {
HistoryStartView.uninit();
if (RemoteTabsStartView)
RemoteTabsStartView.uninit();
},
get chromeWin() {
// XXX Not e10s friendly, we use this in a few places.
return Services.wm.getMostRecentWindow('navigator:browser');
if (this.chromeWin) {
this.chromeWin.removeEventListener("MozPrecisePointer", this, true);
this.chromeWin.removeEventListener("MozImprecisePointer", this, true);
}
Services.obs.removeObserver(this, "metro_viewstate_changed");
},
goToURI: function (aURI) {
@ -84,16 +94,20 @@ var StartUI = {
handleEvent: function handleEvent(aEvent) {
switch (aEvent.type) {
case "MozPrecisePointer":
document.getElementById("bcast_preciseInput").setAttribute("input", "precise");
break;
case "MozImprecisePointer":
document.getElementById("bcast_preciseInput").setAttribute("input", "imprecise");
break;
case "contextmenu":
let event = document.createEvent("Events");
event.initEvent("MozEdgeUICompleted", true, false);
window.dispatchEvent(event);
break;
case "click":
this.onClick(aEvent);
break;
case "MozMousePixelScroll":
let scroller = this.getScrollBoxObject();
if (this.startUI.getAttribute("viewstate") == "snapped") {
@ -106,5 +120,34 @@ var StartUI = {
aEvent.stopPropagation();
break;
}
},
_adjustDOMforViewState: function() {
if (this.chromeWin.MetroUtils.immersive) {
let currViewState = "";
switch (this.chromeWin.MetroUtils.snappedState) {
case Ci.nsIWinMetroUtils.fullScreenLandscape:
currViewState = "landscape";
break;
case Ci.nsIWinMetroUtils.fullScreenPortrait:
currViewState = "portrait";
break;
case Ci.nsIWinMetroUtils.filled:
currViewState = "filled";
break;
case Ci.nsIWinMetroUtils.snapped:
currViewState = "snapped";
break;
}
document.getElementById("bcast_windowState").setAttribute("viewstate", currViewState);
}
},
observe: function (aSubject, aTopic, aData) {
switch (aTopic) {
case "metro_viewstate_changed":
this._adjustDOMforViewState();
break;
}
}
};