Added glance overlay and functionality

This commit is contained in:
mr. M 2024-10-28 15:25:54 +01:00
parent 01905fa4e4
commit a942043645
No known key found for this signature in database
GPG key ID: CBD57A2AEDBDA1FB
3 changed files with 55 additions and 4 deletions

View file

@ -1,5 +1,57 @@
{ {
class ZenGlanceManager extends ZenDOMOperatedFeature {
#currentBrowser = null;
init() {
ChromeUtils.defineLazyGetter(
this,
'overlay',
() => document.getElementById('zen-glance-overlay')
);
ChromeUtils.defineLazyGetter(
this,
'browserWrapper',
() => document.getElementById('zen-glance-browser-container')
);
Services.obs.addObserver(this, "zen-glance-open");
}
observe(subject, topic, data) {
this.openGlance(data);
}
openGlance(url) {
if (this.#currentBrowser) {
return;
}
const currentTab = gBrowser.selectedTab;
const overlayWrapper = currentTab.linkedBrowser.closest(".browserSidebarContainer");
overlayWrapper.appendChild(this.overlay);
window.requestAnimationFrame(() => {
this.overlay.removeAttribute("hidden");
});
}
closeGlance() {
this.#currentBrowser?.remove();
this.#currentBrowser = null;
this.overlay.setAttribute("hidden", true);
}
onLocationChange(_) {
this.closeGlance();
}
}
window.gZenGlanceManager = new ZenGlanceManager();
function registerWindowActors() { function registerWindowActors() {
// TODO: Only if the pref is enabled // TODO: Only if the pref is enabled
gZenActorsManager.addJSWindowActor("ZenGlance", { gZenActorsManager.addJSWindowActor("ZenGlance", {

View file

@ -12,13 +12,13 @@ export class ZenGlanceParent extends JSWindowActorParent {
return Services.prefs.getIntPref('zen.glance.hold-duration', 500); return Services.prefs.getIntPref('zen.glance.hold-duration', 500);
} }
case 'ZenGlance:OpenGlance': { case 'ZenGlance:OpenGlance': {
this.openGlance(); this.openGlance(message.data.url);
break; break;
} }
} }
} }
openGlance() { openGlance(data) {
console.log('Opening glance'); Services.obs.notifyObservers(null, 'zen-glance-open', data);
} }
} }

View file

@ -178,7 +178,6 @@ export class ZenThemeMarketplaceParent extends JSWindowActorParent {
async removeTheme(themeId, triggerUpdate = true) { async removeTheme(themeId, triggerUpdate = true) {
const themePath = PathUtils.join(this.themesRootPath, themeId); const themePath = PathUtils.join(this.themesRootPath, themeId);
console.info('ZenThemeMarketplaceParent: Removing theme ', themePath);
await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true }); await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true });
if (triggerUpdate) { if (triggerUpdate) {
this.triggerThemeUpdate(); this.triggerThemeUpdate();