Changeset 0472bff4 in tol for tolbase/lib/toltk


Ignore:
Timestamp:
Jun 25, 2010, 8:10:00 AM (16 years ago)
Author:
Jorge Pérez <josp.jorge@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
955485a
Parents:
d117849
Message:

refs #929, a submenu must be created or cleared only once

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@2342 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tolbase/lib/toltk/MenuManager.tcl

    rd117849 r0472bff4  
    147147        }
    148148      }
     149      lappend typesSelected(objects) $addr
    149150      lappend typesSelected(objects,$type) $addr
    150151    }
    … …  
    163164
    164165proc ::MenuManager::createSubMenuIfNeeded { targetMenu name } {
     166  variable typesSelected
     167
    165168  set path0 [ split $name "/" ]
    166169  set mm $targetMenu
    … …  
    168171  set mapdot [ list . - ]
    169172  foreach n [ lrange $path0 0 end-1 ] {
     173    #puts "n = $n"
    170174    # evito el caracter . en el nombre de widget
    171175    set n0 [ string map $mapdot $n ]
    172176    set mm0 ${mm}.mm$n0
    173     if { [ winfo exists $mm0 ] } {
    174       $mm0 delete 0 end
    175     } else {
    176       menu $mm0 -tearoff 0
    177     }
    178     set nn [ expr { $nn eq "" ? $n : "/$n" } ]
    179     set labelInfo [ getLabelInfoForEntry $nn ]
    180     foreach { name label image translate } $labelInfo break
    181     set image0 [ ::ImageManager::getImageResourceId $image ]
    182     if { $image0 ne "" } {
    183       set image $image0
    184     }
    185     $mm add cascade -menu $mm0 \
    186         -label [ expr { $translate ? [ msgcat::mc $label ] : $label } ] \
    187         -image $image -compound [ expr { $image eq "" ? "none" : "left" } ]
     177    #puts "mm0 = $mm0"
     178    if { ![ info exists typesSelected(subMenu,inserted,$mm0) ] } {
     179      if { [ winfo exists $mm0 ] } {
     180        #puts "$mm0 existe"
     181        $mm0 delete 0 end
     182      } else {
     183        menu $mm0 -tearoff 0
     184      }
     185      set nn [ expr { $nn eq "" ? $n : "${nn}/${n}" } ]
     186      set labelInfo [ getLabelInfoForEntry $nn ]
     187      foreach { name label image translate } $labelInfo break
     188      set image0 [ ::ImageManager::getImageResourceId $image ]
     189      if { $image0 ne "" } {
     190        set image $image0
     191      }
     192      #puts "insertando menu $mm0 en $mm"
     193      $mm add cascade -menu $mm0 \
     194          -label [ expr { $translate ? [ msgcat::mc $label ] : $label } ] \
     195          -image $image -compound [ expr { $image eq "" ? "none" : "left" } ]
     196      set typesSelected(subMenu,inserted,$mm0) 1
     197    }
    188198    set mm $mm0
    189199  }
     200  #puts "retornando con mm  = $mm"
    190201  return $mm
    191202}
    … …  
    214225
    215226  if { ![ llength [ initTypesInfoFromSelection $selection ] ] } return
    216   insertEntries $menuWidget $selection $typesSelected(globalOptions)
     227  set lenghtValidSelection [ llength $typesSelected(objects) ]
     228  set lengthSelection [ llength $selection ]
     229  if { $lengthSelection == $lenghtValidSelection } {
     230    insertEntries $menuWidget \
     231        $typesSelected(objects) $typesSelected(globalOptions)
     232  }
    217233  # inserto las opciones especificas de cada tipo si es que hay mas de
    218234  # un tipo
    219   if { [ llength $typesSelected(types) ] > 1 } {
     235  if { ( $lengthSelection != $lenghtValidSelection ) ||
     236       [ llength $typesSelected(types) ] > 1 } {
    220237    set mapdot [ list . - ]
    221238    foreach type $typesSelected(types) {
Note: See TracChangeset for help on using the changeset viewer.