Reuse tool windows when they are already open; simplify some code
parent
7fd74ab6db
commit
67f86d3611
|
@ -49,4 +49,4 @@ ARTICLE: "type-index" "Type index"
|
||||||
{ $outliner [ builtins get [ ] subset ] } ;
|
{ $outliner [ builtins get [ ] subset ] } ;
|
||||||
|
|
||||||
ARTICLE: "class-index" "Class index"
|
ARTICLE: "class-index" "Class index"
|
||||||
{ $outliner [ classes get [ ] subset ] } ;
|
{ $outliner [ classes ] } ;
|
||||||
|
|
|
@ -7,6 +7,8 @@ DEFER: draw-world ! defined in world.factor
|
||||||
|
|
||||||
DEFER: open-window* ( world title -- )
|
DEFER: open-window* ( world title -- )
|
||||||
|
|
||||||
|
DEFER: raise-window ( world -- )
|
||||||
|
|
||||||
DEFER: select-gl-context ( handle -- )
|
DEFER: select-gl-context ( handle -- )
|
||||||
|
|
||||||
DEFER: flush-gl-context ( handle -- )
|
DEFER: flush-gl-context ( handle -- )
|
||||||
|
|
|
@ -51,6 +51,9 @@ IN: gadgets
|
||||||
dup start-world
|
dup start-world
|
||||||
world-handle second f -> makeKeyAndOrderFront: ;
|
world-handle second f -> makeKeyAndOrderFront: ;
|
||||||
|
|
||||||
|
: raise-window ( world -- )
|
||||||
|
world-handle second -> makeMainWindow ;
|
||||||
|
|
||||||
: select-gl-context ( handle -- )
|
: select-gl-context ( handle -- )
|
||||||
first -> openGLContext -> makeCurrentContext ;
|
first -> openGLContext -> makeCurrentContext ;
|
||||||
|
|
||||||
|
|
|
@ -35,10 +35,8 @@ M: search-gadget pref-dim* drop { 400 500 } ;
|
||||||
|
|
||||||
: apropos-window
|
: apropos-window
|
||||||
[ apropos ] <search-gadget>
|
[ apropos ] <search-gadget>
|
||||||
"Apropos" <titled-gadget>
|
"Apropos" open-titled-window ;
|
||||||
open-window ;
|
|
||||||
|
|
||||||
: search-help-window
|
: search-help-window
|
||||||
[ search-help. ] <search-gadget>
|
[ search-help. ] <search-gadget>
|
||||||
"Search help" <titled-gadget>
|
"Search help" open-titled-window ;
|
||||||
open-window ;
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
! Copyright (C) 2006 Slava Pestov.
|
! Copyright (C) 2006 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: gadgets
|
IN: gadgets
|
||||||
USING: arrays gadgets gadgets-labels gadgets-theme
|
USING: arrays gadgets gadgets-frames gadgets-labels
|
||||||
gadgets-viewports hashtables kernel math namespaces queues
|
gadgets-theme gadgets-viewports hashtables kernel math
|
||||||
sequences threads ;
|
namespaces queues sequences threads ;
|
||||||
|
|
||||||
! Assoc mapping aliens to gadgets
|
! Assoc mapping aliens to gadgets
|
||||||
SYMBOL: windows
|
SYMBOL: windows
|
||||||
|
@ -66,17 +66,11 @@ TUPLE: titled-gadget title ;
|
||||||
|
|
||||||
M: titled-gadget gadget-title titled-gadget-title ;
|
M: titled-gadget gadget-title titled-gadget-title ;
|
||||||
|
|
||||||
M: titled-gadget pref-dim* viewport-dim ;
|
|
||||||
|
|
||||||
M: titled-gadget layout*
|
|
||||||
dup rect-dim swap gadget-child set-layout-dim ;
|
|
||||||
|
|
||||||
M: titled-gadget focusable-child* gadget-child ;
|
M: titled-gadget focusable-child* gadget-child ;
|
||||||
|
|
||||||
C: titled-gadget ( gadget title -- )
|
C: titled-gadget ( gadget title -- )
|
||||||
dup delegate>gadget
|
|
||||||
[ set-titled-gadget-title ] keep
|
[ set-titled-gadget-title ] keep
|
||||||
[ add-gadget ] keep ;
|
{ { [ ] f @center } } make-frame* ;
|
||||||
|
|
||||||
: update-title ( gadget -- )
|
: update-title ( gadget -- )
|
||||||
dup gadget-parent dup world?
|
dup gadget-parent dup world?
|
||||||
|
@ -88,15 +82,21 @@ C: titled-gadget ( gadget title -- )
|
||||||
: open-titled-window ( gadget title -- )
|
: open-titled-window ( gadget title -- )
|
||||||
<titled-gadget> open-window ;
|
<titled-gadget> open-window ;
|
||||||
|
|
||||||
|
: find-window ( quot -- world )
|
||||||
|
windows get [ second ] map
|
||||||
|
[ world-gadget swap call ] find-last-with nip ; inline
|
||||||
|
|
||||||
: open-tool ( arg cons setter -- )
|
: open-tool ( arg cons setter -- )
|
||||||
>r call tuck r> call open-window ; inline
|
>r call tuck r> call open-window ; inline
|
||||||
|
|
||||||
: call-tool ( arg pred cons setter -- )
|
: call-tool ( arg pred cons setter -- )
|
||||||
>r >r frontmost-window world-gadget swap call [
|
rot find-window [
|
||||||
frontmost-window world-gadget r> drop r> call
|
rot drop
|
||||||
|
dup raise-window
|
||||||
|
world-gadget swap call
|
||||||
] [
|
] [
|
||||||
r> r> open-tool
|
open-tool
|
||||||
] if ; inline
|
] if* ; inline
|
||||||
|
|
||||||
: start-world ( world -- )
|
: start-world ( world -- )
|
||||||
dup add-notify
|
dup add-notify
|
||||||
|
|
|
@ -135,6 +135,9 @@ IN: gadgets
|
||||||
dup gadget-window dup start-world
|
dup gadget-window dup start-world
|
||||||
world-handle first map-window* ;
|
world-handle first map-window* ;
|
||||||
|
|
||||||
|
: raise-window ( world -- )
|
||||||
|
dpy get swap second XRaiseWindow drop ;
|
||||||
|
|
||||||
: select-gl-context ( handle -- )
|
: select-gl-context ( handle -- )
|
||||||
dpy get swap first2 glXMakeCurrent
|
dpy get swap first2 glXMakeCurrent
|
||||||
[ "Failed to set current GLX context" throw ] unless ;
|
[ "Failed to set current GLX context" throw ] unless ;
|
||||||
|
|
Loading…
Reference in New Issue