Skip to content

Commit 2a4d986

Browse files
author
FileShot
committed
fix: Drop zone showing on startup and drag-drop not working
1 parent 053fe23 commit 2a4d986

2 files changed

Lines changed: 27 additions & 12 deletions

File tree

renderer/local/app.js

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -153,37 +153,51 @@ function switchToTool(toolName) {
153153
// DRAG & DROP
154154
// ============================================================================
155155

156+
let dragCounter = 0;
157+
156158
function initDropZone() {
157-
const appContainer = document.querySelector('.app-container');
158159
const dropZone = DOM.dropZone();
159160

160-
// Show drop zone on drag over
161-
appContainer.addEventListener('dragover', (e) => {
161+
// Ensure drop zone is hidden on init
162+
dropZone.hidden = true;
163+
dragCounter = 0;
164+
165+
// Listen on document level for drag events
166+
document.addEventListener('dragenter', (e) => {
162167
e.preventDefault();
163-
e.stopPropagation();
164-
dropZone.hidden = false;
168+
dragCounter++;
169+
if (dragCounter === 1) {
170+
dropZone.hidden = false;
171+
}
165172
});
166173

167-
appContainer.addEventListener('dragleave', (e) => {
174+
document.addEventListener('dragleave', (e) => {
168175
e.preventDefault();
169-
if (e.target === appContainer) {
176+
dragCounter--;
177+
if (dragCounter === 0) {
170178
dropZone.hidden = true;
171179
}
172180
});
173181

182+
document.addEventListener('dragover', (e) => {
183+
e.preventDefault();
184+
e.stopPropagation();
185+
});
186+
174187
// Handle file drop
175-
dropZone.addEventListener('drop', handleFileDrop);
176-
appContainer.addEventListener('drop', handleFileDrop);
188+
document.addEventListener('drop', handleFileDrop);
177189
}
178190

179191
function handleFileDrop(e) {
180192
e.preventDefault();
181193
e.stopPropagation();
182194

195+
// Reset drag counter and hide drop zone
196+
dragCounter = 0;
183197
DOM.dropZone().hidden = true;
184198

185-
const files = e.dataTransfer.files;
186-
if (files.length === 0) return;
199+
const files = e.dataTransfer?.files;
200+
if (!files || files.length === 0) return;
187201

188202
// Switch to vault tool
189203
switchToTool('vault');

renderer/local/styles.css

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ body {
4949
.topbar-right { display: flex; gap: 12px; align-items: center; }
5050
.status-badge { font-size: 12px; color: var(--text-secondary); background: var(--panel); padding: 6px 12px; border-radius: 8px; border: 1px solid var(--border); }
5151

52-
.drop-zone { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.8); display: flex; align-items: center; justify-content: center; z-index: 9999; backdrop-filter: blur(4px); }
52+
.drop-zone { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.85); display: none; align-items: center; justify-content: center; z-index: 9999; backdrop-filter: blur(4px); pointer-events: all; }
53+
.drop-zone:not([hidden]) { display: flex; }
5354
.drop-zone-content { display: flex; flex-direction: column; align-items: center; gap: 16px; color: var(--text); pointer-events: none; }
5455
.drop-zone-content svg { color: var(--accent); opacity: 0.9; }
5556
.drop-zone-text { font-size: 18px; font-weight: 600; }

0 commit comments

Comments
 (0)