Reubencf commited on
Commit
ef3fe15
·
1 Parent(s): 2a7ce2c

fixing layout issue and rendering issues

Browse files
app/components/Desktop.tsx CHANGED
@@ -136,7 +136,7 @@ export function Desktop() {
136
  setCurrentPath(path)
137
  setFileManagerOpen(true)
138
  setFileManagerMinimized(false)
139
- setWindowZIndices(prev => ({ ...prev, fileManager: getNextZIndex() }))
140
  }
141
 
142
  const closeFileManager = () => {
@@ -148,7 +148,7 @@ export function Desktop() {
148
  console.log('Opening Calendar')
149
  setCalendarOpen(true)
150
  setCalendarMinimized(false)
151
- setWindowZIndices(prev => ({ ...prev, calendar: getNextZIndex() }))
152
  }
153
 
154
  const closeCalendar = () => {
@@ -159,7 +159,7 @@ export function Desktop() {
159
  const openClock = () => {
160
  setClockOpen(true)
161
  setClockMinimized(false)
162
- setWindowZIndices(prev => ({ ...prev, clock: getNextZIndex() }))
163
  }
164
 
165
  const closeClock = () => {
@@ -170,7 +170,7 @@ export function Desktop() {
170
  const openMessages = () => {
171
  setMessagesOpen(true)
172
  setMessagesMinimized(false)
173
- setWindowZIndices(prev => ({ ...prev, messages: getNextZIndex() }))
174
  }
175
 
176
  const closeMessages = () => {
@@ -182,7 +182,7 @@ export function Desktop() {
182
  console.log('Opening Gemini Chat')
183
  setGeminiChatOpen(true)
184
  setGeminiChatMinimized(false)
185
- setWindowZIndices(prev => ({ ...prev, gemini: getNextZIndex() }))
186
  }
187
 
188
  const closeGeminiChat = () => {
@@ -198,7 +198,7 @@ export function Desktop() {
198
  setActiveFlutterApp(appFile)
199
  setFlutterRunnerOpen(true)
200
  setFlutterRunnerMinimized(false)
201
- setWindowZIndices(prev => ({ ...prev, flutterRunner: getNextZIndex() }))
202
  }
203
 
204
  const closeFlutterRunner = () => {
@@ -220,7 +220,7 @@ export function Desktop() {
220
  }
221
  setFlutterCodeEditorOpen(true)
222
  setFlutterCodeEditorMinimized(false)
223
- setWindowZIndices(prev => ({ ...prev, flutterCodeEditor: getNextZIndex() }))
224
  }
225
 
226
  const closeFlutterCodeEditor = () => {
@@ -239,7 +239,7 @@ export function Desktop() {
239
  }
240
  setLaTeXEditorOpen(true)
241
  setLaTeXEditorMinimized(false)
242
- setWindowZIndices(prev => ({ ...prev, latexEditor: getNextZIndex() }))
243
  }
244
 
245
  const closeLaTeXEditor = () => {
@@ -250,7 +250,7 @@ export function Desktop() {
250
  const openQuizApp = () => {
251
  setQuizAppOpen(true)
252
  setQuizAppMinimized(false)
253
- setWindowZIndices(prev => ({ ...prev, quizApp: getNextZIndex() }))
254
  }
255
 
256
  const closeQuizApp = () => {
@@ -400,7 +400,10 @@ export function Desktop() {
400
  <Folder size={20} weight="regular" className="text-blue-900" />
401
  </div>
402
  ),
403
- onRestore: () => setFileManagerMinimized(false)
 
 
 
404
  })
405
  }
406
 
@@ -413,7 +416,10 @@ export function Desktop() {
413
  <CalendarIcon size={20} weight="regular" className="text-white" />
414
  </div>
415
  ),
416
- onRestore: () => setCalendarMinimized(false)
 
 
 
417
  })
418
  }
419
 
@@ -426,7 +432,10 @@ export function Desktop() {
426
  <ClockIcon size={20} weight="regular" className="text-white" />
427
  </div>
428
  ),
429
- onRestore: () => setClockMinimized(false)
 
 
 
430
  })
431
  }
432
 
@@ -440,7 +449,10 @@ export function Desktop() {
440
  <ChatCircleDots size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
441
  </div>
442
  ),
443
- onRestore: () => setMessagesMinimized(false)
 
 
 
444
  })
445
  }
446
 
@@ -453,7 +465,10 @@ export function Desktop() {
453
  <Sparkle size={20} weight="fill" className="text-blue-500" />
454
  </div>
455
  ),
456
- onRestore: () => setGeminiChatMinimized(false)
 
 
 
457
  })
458
  }
459
 
@@ -474,7 +489,10 @@ export function Desktop() {
474
  </div>
475
  </div>
476
  ),
477
- onRestore: () => setFlutterRunnerMinimized(false)
 
 
 
478
  })
479
  }
480
 
@@ -493,7 +511,10 @@ export function Desktop() {
493
  </div>
494
  </div>
495
  ),
496
- onRestore: () => setFlutterCodeEditorMinimized(false)
 
 
 
497
  })
498
  }
499
 
@@ -510,7 +531,10 @@ export function Desktop() {
510
  </div>
511
  </div>
512
  ),
513
- onRestore: () => setLaTeXEditorMinimized(false)
 
 
 
514
  })
515
  }
516
 
@@ -524,7 +548,10 @@ export function Desktop() {
524
  <Brain size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
525
  </div>
526
  ),
527
- onRestore: () => setQuizAppMinimized(false)
 
 
 
528
  })
529
  }
530
 
@@ -850,6 +877,8 @@ export function Desktop() {
850
  setActiveFlutterApp(null)
851
  }}
852
  onMinimize={() => setFlutterRunnerMinimized(true)}
 
 
853
  />
854
  </motion.div>
855
  )}
@@ -874,6 +903,8 @@ export function Desktop() {
874
  initialCode={activeFlutterApp?.dartCode}
875
  onClose={closeFlutterCodeEditor}
876
  onMinimize={() => setFlutterCodeEditorMinimized(true)}
 
 
877
  />
878
  </motion.div>
879
  )}
@@ -901,6 +932,8 @@ export function Desktop() {
901
  setActiveLaTeXApp(null)
902
  }}
903
  onMinimize={() => setLaTeXEditorMinimized(true)}
 
 
904
  />
905
  </motion.div>
906
  )}
@@ -924,6 +957,7 @@ export function Desktop() {
924
  <QuizApp
925
  onClose={closeQuizApp}
926
  onMinimize={() => setQuizAppMinimized(true)}
 
927
  zIndex={windowZIndices.quizApp || 1000}
928
  />
929
  </motion.div>
 
136
  setCurrentPath(path)
137
  setFileManagerOpen(true)
138
  setFileManagerMinimized(false)
139
+ bringWindowToFront('fileManager')
140
  }
141
 
142
  const closeFileManager = () => {
 
148
  console.log('Opening Calendar')
149
  setCalendarOpen(true)
150
  setCalendarMinimized(false)
151
+ bringWindowToFront('calendar')
152
  }
153
 
154
  const closeCalendar = () => {
 
159
  const openClock = () => {
160
  setClockOpen(true)
161
  setClockMinimized(false)
162
+ bringWindowToFront('clock')
163
  }
164
 
165
  const closeClock = () => {
 
170
  const openMessages = () => {
171
  setMessagesOpen(true)
172
  setMessagesMinimized(false)
173
+ bringWindowToFront('messages')
174
  }
175
 
176
  const closeMessages = () => {
 
182
  console.log('Opening Gemini Chat')
183
  setGeminiChatOpen(true)
184
  setGeminiChatMinimized(false)
185
+ bringWindowToFront('gemini')
186
  }
187
 
188
  const closeGeminiChat = () => {
 
198
  setActiveFlutterApp(appFile)
199
  setFlutterRunnerOpen(true)
200
  setFlutterRunnerMinimized(false)
201
+ bringWindowToFront('flutterRunner')
202
  }
203
 
204
  const closeFlutterRunner = () => {
 
220
  }
221
  setFlutterCodeEditorOpen(true)
222
  setFlutterCodeEditorMinimized(false)
223
+ bringWindowToFront('flutterCodeEditor')
224
  }
225
 
226
  const closeFlutterCodeEditor = () => {
 
239
  }
240
  setLaTeXEditorOpen(true)
241
  setLaTeXEditorMinimized(false)
242
+ bringWindowToFront('latexEditor')
243
  }
244
 
245
  const closeLaTeXEditor = () => {
 
250
  const openQuizApp = () => {
251
  setQuizAppOpen(true)
252
  setQuizAppMinimized(false)
253
+ bringWindowToFront('quizApp')
254
  }
255
 
256
  const closeQuizApp = () => {
 
400
  <Folder size={20} weight="regular" className="text-blue-900" />
401
  </div>
402
  ),
403
+ onRestore: () => {
404
+ setFileManagerMinimized(false)
405
+ bringWindowToFront('fileManager')
406
+ }
407
  })
408
  }
409
 
 
416
  <CalendarIcon size={20} weight="regular" className="text-white" />
417
  </div>
418
  ),
419
+ onRestore: () => {
420
+ setCalendarMinimized(false)
421
+ bringWindowToFront('calendar')
422
+ }
423
  })
424
  }
425
 
 
432
  <ClockIcon size={20} weight="regular" className="text-white" />
433
  </div>
434
  ),
435
+ onRestore: () => {
436
+ setClockMinimized(false)
437
+ bringWindowToFront('clock')
438
+ }
439
  })
440
  }
441
 
 
449
  <ChatCircleDots size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
450
  </div>
451
  ),
452
+ onRestore: () => {
453
+ setMessagesMinimized(false)
454
+ bringWindowToFront('messages')
455
+ }
456
  })
457
  }
458
 
 
465
  <Sparkle size={20} weight="fill" className="text-blue-500" />
466
  </div>
467
  ),
468
+ onRestore: () => {
469
+ setGeminiChatMinimized(false)
470
+ bringWindowToFront('gemini')
471
+ }
472
  })
473
  }
474
 
 
489
  </div>
490
  </div>
491
  ),
492
+ onRestore: () => {
493
+ setFlutterRunnerMinimized(false)
494
+ bringWindowToFront('flutterRunner')
495
+ }
496
  })
497
  }
498
 
 
511
  </div>
512
  </div>
513
  ),
514
+ onRestore: () => {
515
+ setFlutterCodeEditorMinimized(false)
516
+ bringWindowToFront('flutterCodeEditor')
517
+ }
518
  })
519
  }
520
 
 
531
  </div>
532
  </div>
533
  ),
534
+ onRestore: () => {
535
+ setLaTeXEditorMinimized(false)
536
+ bringWindowToFront('latexEditor')
537
+ }
538
  })
539
  }
540
 
 
548
  <Brain size={20} weight="fill" className="text-white relative z-10 drop-shadow-md" />
549
  </div>
550
  ),
551
+ onRestore: () => {
552
+ setQuizAppMinimized(false)
553
+ bringWindowToFront('quizApp')
554
+ }
555
  })
556
  }
557
 
 
877
  setActiveFlutterApp(null)
878
  }}
879
  onMinimize={() => setFlutterRunnerMinimized(true)}
880
+ onFocus={() => bringWindowToFront('flutterRunner')}
881
+ zIndex={windowZIndices.flutterRunner || 1000}
882
  />
883
  </motion.div>
884
  )}
 
903
  initialCode={activeFlutterApp?.dartCode}
904
  onClose={closeFlutterCodeEditor}
905
  onMinimize={() => setFlutterCodeEditorMinimized(true)}
906
+ onFocus={() => bringWindowToFront('flutterCodeEditor')}
907
+ zIndex={windowZIndices.flutterCodeEditor || 1000}
908
  />
909
  </motion.div>
910
  )}
 
932
  setActiveLaTeXApp(null)
933
  }}
934
  onMinimize={() => setLaTeXEditorMinimized(true)}
935
+ onFocus={() => bringWindowToFront('latexEditor')}
936
+ zIndex={windowZIndices.latexEditor || 1000}
937
  />
938
  </motion.div>
939
  )}
 
957
  <QuizApp
958
  onClose={closeQuizApp}
959
  onMinimize={() => setQuizAppMinimized(true)}
960
+ onFocus={() => bringWindowToFront('quizApp')}
961
  zIndex={windowZIndices.quizApp || 1000}
962
  />
963
  </motion.div>
app/components/FlutterRunner.tsx CHANGED
@@ -6,9 +6,7 @@ import {
6
  Download,
7
  SidebarSimple,
8
  FileCode,
9
- CaretDown,
10
- Copy
11
-
12
  } from '@phosphor-icons/react'
13
  import Window from './Window'
14
 
@@ -16,6 +14,8 @@ interface FlutterRunnerProps {
16
  onClose: () => void
17
  onMinimize?: () => void
18
  onMaximize?: () => void
 
 
19
  initialCode?: string
20
  }
21
 
@@ -97,7 +97,7 @@ class _MyHomePageState extends State<MyHomePage> {
97
  }
98
  }`
99
 
100
- export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }: FlutterRunnerProps) {
101
  const [code, setCode] = useState(initialCode || DEFAULT_FLUTTER_CODE)
102
  const [showEditor, setShowEditor] = useState(true)
103
  const [showFiles, setShowFiles] = useState(true)
@@ -246,13 +246,6 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
246
  URL.revokeObjectURL(url)
247
  }
248
 
249
- const handleCopyCode = () => {
250
- navigator.clipboard.writeText(code).then(() => {
251
- console.log("Code copied to clipboard!")
252
- }).catch(err => {
253
- console.error("Failed to copy:", err)
254
- })
255
- }
256
 
257
  return (
258
  <Window
@@ -262,6 +255,8 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
262
  onClose={onClose}
263
  onMinimize={onMinimize}
264
  onMaximize={onMaximize}
 
 
265
  width={1400}
266
  height={800}
267
  x={40}
@@ -319,14 +314,6 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
319
  </div>
320
 
321
  <div className="flex items-center gap-2">
322
- <button
323
- onClick={handleCopyCode}
324
- className="flex items-center gap-1 px-3 py-1.5 bg-green-600 hover:bg-green-700 text-white rounded text-xs font-medium transition-colors"
325
- title="Copy Code to Clipboard"
326
- >
327
- <Copy size={14} weight="bold" />
328
- Copy Code
329
- </button>
330
  <button
331
  onClick={handleDownload}
332
  className="p-1.5 text-gray-400 hover:text-white hover:bg-[#3e3e42] rounded transition-colors"
@@ -384,8 +371,8 @@ export function FlutterRunner({ onClose, onMinimize, onMaximize, initialCode }:
384
  <div className="w-24" /> {/* Spacer for centering */}
385
  </div>
386
  <div className="flex-1 bg-[#1e1e1e] relative overflow-hidden">
387
- <div className="absolute top-0 left-0 right-0 bg-blue-900/90 backdrop-blur-sm px-4 py-2 z-10 border-b border-blue-700">
388
- <p className="text-blue-100 text-sm font-medium">📋 Click "Copy Code" button, then paste into DartPad editor</p>
389
  </div>
390
  <iframe
391
 
 
6
  Download,
7
  SidebarSimple,
8
  FileCode,
9
+ CaretDown
 
 
10
  } from '@phosphor-icons/react'
11
  import Window from './Window'
12
 
 
14
  onClose: () => void
15
  onMinimize?: () => void
16
  onMaximize?: () => void
17
+ onFocus?: () => void
18
+ zIndex?: number
19
  initialCode?: string
20
  }
21
 
 
97
  }
98
  }`
99
 
100
+ export function FlutterRunner({ onClose, onMinimize, onMaximize, onFocus, zIndex, initialCode }: FlutterRunnerProps) {
101
  const [code, setCode] = useState(initialCode || DEFAULT_FLUTTER_CODE)
102
  const [showEditor, setShowEditor] = useState(true)
103
  const [showFiles, setShowFiles] = useState(true)
 
246
  URL.revokeObjectURL(url)
247
  }
248
 
 
 
 
 
 
 
 
249
 
250
  return (
251
  <Window
 
255
  onClose={onClose}
256
  onMinimize={onMinimize}
257
  onMaximize={onMaximize}
258
+ onFocus={onFocus}
259
+ zIndex={zIndex}
260
  width={1400}
261
  height={800}
262
  x={40}
 
314
  </div>
315
 
316
  <div className="flex items-center gap-2">
 
 
 
 
 
 
 
 
317
  <button
318
  onClick={handleDownload}
319
  className="p-1.5 text-gray-400 hover:text-white hover:bg-[#3e3e42] rounded transition-colors"
 
371
  <div className="w-24" /> {/* Spacer for centering */}
372
  </div>
373
  <div className="flex-1 bg-[#1e1e1e] relative overflow-hidden">
374
+ <div className="absolute top-0 left-0 right-0 bg-gray-900/95 backdrop-blur-sm px-4 py-2 z-10 border-b border-gray-700">
375
+ <p className="text-red-500 text-sm font-bold">Copy the code from editor to DartPad</p>
376
  </div>
377
  <iframe
378
 
app/components/LaTeXEditor.tsx CHANGED
@@ -24,6 +24,8 @@ interface LaTeXEditorProps {
24
  onClose: () => void
25
  onMinimize?: () => void
26
  onMaximize?: () => void
 
 
27
  initialContent?: string
28
  }
29
 
@@ -55,7 +57,7 @@ Here is an equation:
55
 
56
  \\end{document}`
57
 
58
- export function LaTeXEditor({ onClose, onMinimize, onMaximize, initialContent }: LaTeXEditorProps) {
59
  const [code, setCode] = useState(initialContent || DEFAULT_LATEX)
60
  const [showSidebar, setShowSidebar] = useState(true)
61
  const [files, setFiles] = useState<FileNode[]>([])
@@ -339,6 +341,8 @@ export function LaTeXEditor({ onClose, onMinimize, onMaximize, initialContent }:
339
  onClose={onClose}
340
  onMinimize={onMinimize}
341
  onMaximize={onMaximize}
 
 
342
  width={1200}
343
  height={800}
344
  x={60}
 
24
  onClose: () => void
25
  onMinimize?: () => void
26
  onMaximize?: () => void
27
+ onFocus?: () => void
28
+ zIndex?: number
29
  initialContent?: string
30
  }
31
 
 
57
 
58
  \\end{document}`
59
 
60
+ export function LaTeXEditor({ onClose, onMinimize, onMaximize, onFocus, zIndex, initialContent }: LaTeXEditorProps) {
61
  const [code, setCode] = useState(initialContent || DEFAULT_LATEX)
62
  const [showSidebar, setShowSidebar] = useState(true)
63
  const [files, setFiles] = useState<FileNode[]>([])
 
341
  onClose={onClose}
342
  onMinimize={onMinimize}
343
  onMaximize={onMaximize}
344
+ onFocus={onFocus}
345
+ zIndex={zIndex}
346
  width={1200}
347
  height={800}
348
  x={60}
app/components/QuizApp.tsx CHANGED
@@ -27,10 +27,11 @@ interface QuizQuestion {
27
  interface QuizAppProps {
28
  onClose: () => void
29
  onMinimize: () => void
 
30
  zIndex: number
31
  }
32
 
33
- export function QuizApp({ onClose, onMinimize, zIndex }: QuizAppProps) {
34
  const [windowSize, setWindowSize] = useState({ width: 800, height: 600 })
35
  const [passkey, setPasskey] = useState('')
36
  const [tempPasskey, setTempPasskey] = useState('')
@@ -259,6 +260,7 @@ export function QuizApp({ onClose, onMinimize, zIndex }: QuizAppProps) {
259
  isOpen={true}
260
  onClose={onClose}
261
  onMinimize={onMinimize}
 
262
  zIndex={zIndex}
263
  width={windowSize.width}
264
  height={windowSize.height}
 
27
  interface QuizAppProps {
28
  onClose: () => void
29
  onMinimize: () => void
30
+ onFocus?: () => void
31
  zIndex: number
32
  }
33
 
34
+ export function QuizApp({ onClose, onMinimize, onFocus, zIndex }: QuizAppProps) {
35
  const [windowSize, setWindowSize] = useState({ width: 800, height: 600 })
36
  const [passkey, setPasskey] = useState('')
37
  const [tempPasskey, setTempPasskey] = useState('')
 
260
  isOpen={true}
261
  onClose={onClose}
262
  onMinimize={onMinimize}
263
+ onFocus={onFocus}
264
  zIndex={zIndex}
265
  width={windowSize.width}
266
  height={windowSize.height}