Revision: 54031
          http://brlcad.svn.sourceforge.net/brlcad/?rev=54031&view=rev
Author:   caen23
Date:     2012-12-09 20:50:47 +0000 (Sun, 09 Dec 2012)
Log Message:
-----------
The command window can now be reopened. MGED no longer closes after closing the 
graphics window. On OpenGL, trying to reopen the graphics window crashes the 
app. On X11, everything works fine.

Modified Paths:
--------------
    brlcad/trunk/src/tclscripts/mged/openw.tcl

Modified: brlcad/trunk/src/tclscripts/mged/openw.tcl
===================================================================
--- brlcad/trunk/src/tclscripts/mged/openw.tcl  2012-12-09 20:48:45 UTC (rev 
54030)
+++ brlcad/trunk/src/tclscripts/mged/openw.tcl  2012-12-09 20:50:47 UTC (rev 
54031)
@@ -1958,11 +1958,11 @@
     .$id.menubar.tools add separator
 
     .$id.menubar.tools add command -label "Command Window" -underline 6\
-       -command "raise .$id"
+       -command "set mged_gui($id,show_cmd) 1; wm deiconify .$id; raise .$id"
     hoc_register_menu_data "Tools" "Command Window" "Command Window"\
        { { summary "Raise the command window." } }
     .$id.menubar.tools add command -label "Graphics Window" -underline 7\
-       -command "raise $mged_gui($id,top)"
+       -command "set mged_gui($id,show_dm) 1; wm deiconify $mged_gui($id,top); 
raise $mged_gui($id,top)"
     hoc_register_menu_data "Tools" "Graphics Window" "Graphics Window"\
        { { summary "Raise the geometry window." } }
 
@@ -2320,7 +2320,8 @@
     # set geometry (i.e. size and position) according to mged_default(ggeom)
     wm geometry $mged_gui($id,top) $mged_default(ggeom)
 
-    wm protocol $mged_gui($id,top) WM_DELETE_WINDOW "gui_destroy $id"
+    wm protocol $mged_gui($id,top) WM_DELETE_WINDOW "dm_win_hide $id"
+    wm protocol .$id WM_DELETE_WINDOW "cmd_win_hide $id"
 
     if { $comb } {
        if { !$mged_gui($id,show_dm) } {
@@ -2337,36 +2338,59 @@
     }
 }
 
+proc cmd_win_hide args {
+    global mged_gui
+
+    set id [lindex $args 0]
+    set mged_gui($id,show_cmd) 0
+    wm state .$id withdrawn
+
+    gui_destroy $id
+}
+
+proc dm_win_hide args {
+    global mged_gui
+
+    set id [lindex $args 0]
+    set mged_gui($id,show_dm) 0
+    wm state $mged_gui($id,dmc) withdrawn
+
+    gui_destroy $id
+}
+
 proc gui_destroy args {
     global mged_gui
     global mged_players
     global mged_collaborators
 
     if { [llength $args] != 1 } {
-       return [help gui_destroy]
+        return [help gui_destroy]
     }
 
     set id [lindex $args 0]
 
-    set i [lsearch -exact $mged_players $id]
-    if { $i == -1 } {
-       return "gui_destroy: bad id - $id"
-    }
-    set mged_players [lreplace $mged_players $i $i]
+    if { $mged_gui($id,show_dm) == 0 && $mged_gui($id,show_cmd) == 0 } {
 
-    if { [lsearch -exact $mged_collaborators $id] != -1 } {
-       collaborate quit $id
-    }
+        set i [lsearch -exact $mged_players $id]
+        if { $i == -1 } {
+            return "gui_destroy: bad id - $id"
+        }
+        set mged_players [lreplace $mged_players $i $i]
 
-    set mged_gui($id,multi_pane) 0
-    set mged_gui($id,show_edit_info) 0
+        if { [lsearch -exact $mged_collaborators $id] != -1 } {
+            collaborate quit $id
+        }
 
-    releasemv $id
-    catch { cmd_win close $id }
-    catch { destroy .mmenu$id }
-    catch { destroy .sliders$id }
-    catch { destroy $mged_gui($id,top) }
-    catch { destroy .$id }
+        set mged_gui($id,multi_pane) 0
+        set mged_gui($id,show_edit_info) 0
+
+        releasemv $id
+        catch { cmd_win close $id }
+        catch { destroy .mmenu$id }
+        catch { destroy .sliders$id }
+        catch { destroy $mged_gui($id,top) }
+        catch { destroy .$id }
+    }
 }
 
 proc reconfig_gui_default { id } {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to