diff --git a/locales/id/browser/browser/preferences/zen-preferences.ftl b/locales/id/browser/browser/preferences/zen-preferences.ftl index 545fe2901..71e6c6754 100644 --- a/locales/id/browser/browser/preferences/zen-preferences.ftl +++ b/locales/id/browser/browser/preferences/zen-preferences.ftl @@ -45,9 +45,9 @@ pane-settings-workspaces-title = Ruang Kerja zen-tabs-unloader-enabled = .label = Aktifkan Pelepas Tab zen-tabs-close-on-back-with-no-history = - .label = Close tab and switch to its owner tab (or most recently used tab) when going back with no history + .label = Tutup tab dan beralih ke tab pemiliknya (atau tab yang terakhir digunakan) saat kembali tanpa riwayat zen-tabs-cycle-by-attribute = - .label = Ctrl+Tab cycles within Essential or Workspace tabs only + .label = Ctrl+Tab berputar hanya dalam tab Esensial atau Ruang Kerja zen-tabs-cycle-ignore-pending-tabs = .label = Ignore Pending tabs when cycling with Ctrl+Tab zen-tabs-cycle-by-attribute-warning = Ctrl+Tab will cycle by recently used order, as it is enabled @@ -311,4 +311,4 @@ zen-devtools-toggle-performance-shortcut = Ubah Performance zen-devtools-toggle-storage-shortcut = Ubah Penyimpanan zen-devtools-toggle-dom-shortcut = Ubah DOM zen-devtools-toggle-accessibility-shortcut = Ubah Aksesibilitas -zen-close-all-unpinned-tabs-shortcut = Close All Unpinned Tabs +zen-close-all-unpinned-tabs-shortcut = Tutup Semua Tab yang Tidak Disematkan diff --git a/locales/id/browser/browser/zen-general.ftl b/locales/id/browser/browser/zen-general.ftl index 4451a416f..90d834f96 100644 --- a/locales/id/browser/browser/zen-general.ftl +++ b/locales/id/browser/browser/zen-general.ftl @@ -8,9 +8,9 @@ tab-context-zen-reset-pinned-tab = .label = Kembalikan ke URL Awal .accesskey = R tab-context-zen-add-essential = - .label = Add to Essentials + .label = Tambahkan ke Essentials .accesskey = E -tab-context-zen-add-essential-badge = { $num } / { $max } slots filled +tab-context-zen-add-essential-badge = { $num } / { $max } slot terisi tab-context-zen-remove-essential = .label = Hapus dari Essentials .accesskey = R @@ -96,5 +96,5 @@ zen-site-data-setting-site-protection = Perlindungan Pelacakan zen-site-data-panel-feature-callout-title = Rumah baru untuk add-on, izin, dan lainnya zen-site-data-panel-feature-callout-subtitle = Klik ikon untuk mengelola pengaturan situs, melihat info keamanan, mengakses ekstensi, dan melakukan tindakan umum. zen-open-link-in-glance = - .label = Open Link in Glance + .label = Buka Tautan di Glance .accesskey = G diff --git a/locales/id/browser/browser/zen-workspaces.ftl b/locales/id/browser/browser/zen-workspaces.ftl index 25a94b3c3..dd99d5d3b 100644 --- a/locales/id/browser/browser/zen-workspaces.ftl +++ b/locales/id/browser/browser/zen-workspaces.ftl @@ -59,7 +59,7 @@ zen-workspaces-delete-workspace-title = Delete Workspace? zen-workspaces-delete-workspace-body = Apakah Anda yakin ingin menghapus { $name }? Tindakan ini tidak bisa dibatalkan. # Note that the html tag MUST not be changed or removed, as it is used to better # display the shortcut in the toast notification. -zen-workspaces-close-all-unpinned-tabs-toast = Tabs Closed! Use { $shortcut } to undo. +zen-workspaces-close-all-unpinned-tabs-toast = Tab Ditutup! Gunakan { $shortcut } untuk membatalkan. zen-workspaces-close-all-unpinned-tabs-title = - .label = Clear - .tooltiptext = Close all unpinned tabs + .label = Bersihkan + .tooltiptext = Tutup semua tab yang tidak disematkan diff --git a/prefs/zen/view.yaml b/prefs/zen/view.yaml index 8235e67fe..334de94da 100644 --- a/prefs/zen/view.yaml +++ b/prefs/zen/view.yaml @@ -43,11 +43,8 @@ - name: zen.view.drag-and-drop.move-over-threshold value: 70 -- name: zen.view.drag-and-drop.drop-inside-upper-threshold - value: 80 - -- name: zen.view.drag-and-drop.drop-inside-lower-threshold - value: 30 +- name: zen.view.drag-and-drop.edge-zone-threshold + value: 25 - name: zen.view.context-menu.refresh value: false diff --git a/src/zen/folders/ZenFolders.mjs b/src/zen/folders/ZenFolders.mjs index 4245f4cd6..010a196a7 100644 --- a/src/zen/folders/ZenFolders.mjs +++ b/src/zen/folders/ZenFolders.mjs @@ -29,9 +29,11 @@ return `${month} month${month === 1 ? '' : 's'} ago`; } - const ZEN_MAX_SUBFOLDERS = Services.prefs.getIntPref('zen.folders.max-subfolders'); - class nsZenFolders extends nsZenDOMOperatedFeature { + #ZEN_MAX_SUBFOLDERS = Services.prefs.getIntPref('zen.folders.max-subfolders', 5); + #ZEN_EDGE_ZONE_THRESHOLD = + Services.prefs.getIntPref('zen.view.drag-and-drop.edge-zone-threshold', 25) / 100; + #popup = null; #popupTimer = null; #mouseTimer = null; @@ -89,7 +91,7 @@ const newSubfolderItem = document.getElementById('context_zenFolderNewSubfolder'); newSubfolderItem.setAttribute( 'disabled', - folder.level >= ZEN_MAX_SUBFOLDERS - 1 ? 'true' : 'false' + folder.level >= this.#ZEN_MAX_SUBFOLDERS - 1 ? 'true' : 'false' ); const changeFolderSpace = document @@ -470,7 +472,7 @@ canDropElement(element, targetElement) { const isZenFolder = element?.isZenFolder; const level = targetElement?.group?.level + 1; - if (isZenFolder && level >= ZEN_MAX_SUBFOLDERS) { + if (isZenFolder && level >= this.#ZEN_MAX_SUBFOLDERS) { return false; } return true; @@ -899,7 +901,11 @@ const labelContainer = group.querySelector('.tab-group-label-container'); // Setup mouseenter/mouseleave events for the folder labelContainer.addEventListener('mouseenter', (event) => { - if (!group.collapsed || !Services.prefs.getBoolPref('zen.folders.search.enabled')) { + if ( + !group.collapsed || + !Services.prefs.getBoolPref('zen.folders.search.enabled') || + gBrowser.tabContainer.hasAttribute('movingtab') + ) { return; } this.#mouseTimer = setTimeout(() => { @@ -1104,7 +1110,8 @@ (!folder.hasAttribute('split-view-group') || !folder.hasAttribute('selected')) && folder !== tab?.group && !( - folder.level >= ZEN_MAX_SUBFOLDERS && movingTabs?.some((t) => gBrowser.isTabGroupLabel(t)) + folder.level >= this.#ZEN_MAX_SUBFOLDERS && + movingTabs?.some((t) => gBrowser.isTabGroupLabel(t)) ) ) { folder.setAttribute('selected', 'true'); @@ -1151,10 +1158,6 @@ let dropElement = currentDropElement; let dropBefore = currentDropBefore; let colorCode = currentColorCode; - let dragUpThreshold = - Services.prefs.getIntPref('zen.view.drag-and-drop.drop-inside-upper-threshold') / 100; - let dragDownThreshold = - Services.prefs.getIntPref('zen.view.drag-and-drop.drop-inside-lower-threshold') / 100; const dropElementGroup = dropElement?.isZenFolder ? dropElement : dropElement?.group; const isSplitGroup = dropElement?.group?.hasAttribute('split-view-group'); @@ -1162,26 +1165,17 @@ dropElementGroup.querySelector('.zen-tab-group-start').nextElementSibling; if (gBrowser.isTabGroup(firstGroupElem)) firstGroupElem = firstGroupElem.labelElement; - const isRestrictedGroup = isSplitGroup || dropElementGroup.collapsed; - - const shouldDropInside = - !dropBefore && - overlapPercent >= dragDownThreshold && - overlapPercent <= dragUpThreshold && - !isSplitGroup; - const shouldDropNear = overlapPercent < dragUpThreshold || overlapPercent > dragDownThreshold; + const isInMiddleZone = + overlapPercent >= this.#ZEN_EDGE_ZONE_THRESHOLD && + overlapPercent <= 1 - this.#ZEN_EDGE_ZONE_THRESHOLD; + const shouldDropInside = isInMiddleZone && !isSplitGroup; if (shouldDropInside) { dropElement = firstGroupElem; dropBefore = true; this.highlightGroupOnDragOver(dropElementGroup, movingTabs); - } else if (shouldDropNear) { - if (dropBefore) { - colorCode = undefined; - } else if (!isRestrictedGroup) { - dropElement = firstGroupElem; - dropBefore = true; - } + } else { + colorCode = undefined; this.highlightGroupOnDragOver(null); }