[GRASS5] grass5.0/5.3 - tcltkgrass: command line in the module windows is not copyable

Hello,

A question that came up on the French speaking list: In the module windows
opened by tcltkgrass, the command line that the chosen opens create is
displayed in the last text field of the window. Before, one could copy
this text field (and thus include the command in a script, or simply learn
how to use the command line). Now, this field is not copyable anymore (at
least under Debian testing/unstable with XFCE and under Mandrake 9.2).
Anyone know why ?

Moritz

A question that came up on the French speaking list: In the module
windows opened by tcltkgrass, the command line that the chosen opens
create is displayed in the last text field of the window. Before, one
could copy this text field (and thus include the command in a script,
or simply learn how to use the command line). Now, this field is not
copyable anymore (at least under Debian testing/unstable with XFCE and
under Mandrake 9.2). Anyone know why ?

I've seen the same thing with Debian/testing, versions of GRASS from
5.0.2 through 5.3. (NVIZ crashes, so I figure both were compiled with tcl8.4)

On a Redhat 7.3 system, it works ok, 5.0.3preX & GRASS 5.3 from last month.

I'll try compiling 5.3 with Tcl/Tk 8.3 on Debian and see if that works ...

Hamish

> A question that came up on the French speaking list: In the module
> windows opened by tcltkgrass, the command line that the chosen opens
> create is displayed in the last text field of the window. Before,
> one could copy this text field (and thus include the command in a
> script, or simply learn how to use the command line). Now, this
> field is not copyable anymore (at least under Debian
> testing/unstable with XFCE and under Mandrake 9.2). Anyone know why
> ?

I've seen the same thing with Debian/testing, versions of GRASS from
5.0.2 through 5.3. (NVIZ crashes, so I figure both were compiled with
tcl8.4)

On a Redhat 7.3 system, it works ok, 5.0.3preX & GRASS 5.3 from last month.
I'll try compiling 5.3 with Tcl/Tk 8.3 on Debian and see if that works ...

Nope, GRASS 5.3 compiled with Tcl/Tk 8.3 on Debian/testing doesn't let
you select the command text.

Hamish

Hamish wrote:

> > A question that came up on the French speaking list: In the module
> > windows opened by tcltkgrass, the command line that the chosen opens
> > create is displayed in the last text field of the window. Before,
> > one could copy this text field (and thus include the command in a
> > script, or simply learn how to use the command line). Now, this
> > field is not copyable anymore (at least under Debian
> > testing/unstable with XFCE and under Mandrake 9.2). Anyone know why
> > ?
>
> I've seen the same thing with Debian/testing, versions of GRASS from
> 5.0.2 through 5.3. (NVIZ crashes, so I figure both were compiled with
> tcl8.4)
>
> On a Redhat 7.3 system, it works ok, 5.0.3preX & GRASS 5.3 from last month.
> I'll try compiling 5.3 with Tcl/Tk 8.3 on Debian and see if that works ...

Nope, GRASS 5.3 compiled with Tcl/Tk 8.3 on Debian/testing doesn't let
you select the command text.

src/tcltkgrass/main/gui.tcl, lines 241-242:

    [create_entry $path num $variable "" 1 ${array}(command_line)] \
        configure -state disabled -fg blue -relief solid

My suspicion is that "-state disabled" inhibits selection as well as
modification.

In 8.3.4, entry.tcl has:

  # tkEntryButton1 --
  # This procedure is invoked to handle button-1 presses in entry
  # widgets. It moves the insertion cursor, sets the selection anchor,
  # and claims the input focus.
  #
  # Arguments:
  # w - The entry window in which the button was pressed.
  # x - The x-coordinate of the button press.
  
  proc tkEntryButton1 {w x} {
      global tkPriv
  
      set tkPriv(selectMode) char
      set tkPriv(mouseMoved) 0
      set tkPriv(pressX) $x
      $w icursor [tkEntryClosestGap $w $x]
      $w selection from insert
      if {[string compare "disabled" [$w cget -state]]} {focus $w}
  }

The last line indicates that the widget can't get the input focus if
it's disabled. This ties in with the following in generic/tkEntry.c:

      /*
       * On Windows and Mac, we need to hide the selection whenever we
       * don't have the focus.
       */
  
  #ifdef ALWAYS_SHOW_SELECTION
      showSelection = 1;
  #else
      showSelection = (entryPtr->flags & GOT_FOCUS);
  #endif

Although the comment refers to "Windows and Mac", it's conceivable
that Tk may have been built without ALWAYS_SHOW_SELECTION defined, in
which case a widget without focus wouldn't show the selection
(although, AFAICT, the selection still exists, it just isn't shown).

In any case, try removing the "-state disabled" and see if that
helps.

--
Glynn Clements <glynn.clements@virgin.net>

> > > A question that came up on the French speaking list: In the
> > > module windows opened by tcltkgrass, the command line that the
> > > chosen opens create is displayed in the last text field of the
> > > window. Before, one could copy this text field (and thus include
> > > the command in a script, or simply learn how to use the command
> > > line). Now, this field is not copyable anymore (at least under
> > > Debian testing/unstable with XFCE and under Mandrake 9.2).
> > > Anyone know why?

...

src/tcltkgrass/main/gui.tcl, lines 241-242:

    [create_entry $path num $variable "" 1 ${array}(command_line)] \
        configure -state disabled -fg blue -relief solid

My suspicion is that "-state disabled" inhibits selection as well as
modification.

...

In any case, try removing the "-state disabled" and see if that
helps.

Yes, after removing that you can select & paste text from the command box.

If you try typing into the command box, the cusor advances but the text
(and command that is run) doesn't change. The cursor stops advancing
when you get to the end of the displayed text.

Hamish