I raised tracker 1363141 for this.  Thanks for the report.

Rob.

Plum, Jason wrote:
Hey all,

Ariel Serbin and I have notice something strange occurring with the splitter demo, and specifically the splitter control itself.

Run the script attached, a previous post contained it. Then, drag the splitter to the left a short distance, then back to the right and equal amount. You’ll notice that there is a nasty artifact showing up on the screen. Of course when your test in the text field overlaps this artifact, it is resolved within the relative area of the text [Rob and all may know the proper names, but unfortunately I’m not that in depth].

I believe it has something to with the underlying DC objects that are drawing the splitter control, but am fully aware that I don’t have the understanding to fix this.

WinXP SP2, AS 5.8.7, Win32-GUI 1.02 and Win32-GUI 1.02_03 this occurs.

Jason P.

Note: For ease of replicable visibility, we’ve widened the splitter control in the code below.

--CODE—

#!perl -w

use strict;

use warnings;

use Win32::GUI;

my $mw = Win32::GUI::Window->new(

            -title => "Splitter Test",

            -pos   => [100,100],

            -size  => [500,400],

            -onResize => \&main_resize,

);

$mw->AddTextfield(

            -name => "TF1",

            -multiline => 1,

            -width => 200,

);

$mw->AddSplitter(

            -name => "SP",

            -left => 200,

            -width => 10, #FATTY

            -onRelease => \&do_splitter,

);

$mw->AddTextfield(

            -name => "TF2",

            -multiline => 1,

            -left => 200 + $mw->SP->Width(),

);

$mw->Show();

Win32::GUI::Dialog();

exit(0);

# NEM splitter event gets 2 parameters.  The first (as always)

# is the window object the wvwnt came from - in this case the

# splitter window; The second depends on the splitter orientation:

# if horzontal it is the top coordinate; if vertical it is

# the left coordinate. (coordinates relative to the parent's

# client area)

# The splitter window is moved by the splitter object, so you only

# have to re-position your other windows

sub do_splitter {

            my ($splitter, $coord) = @_;

            $mw->TF1->Width($coord);

            $mw->TF2->Move($coord+$mw->SP->Width(), 0);

$mw->TF2->Resize($mw->ScaleWidth()-$mw->SP->Width(), $mw->ScaleHeight());

}

sub main_resize

{

            my $self = shift;

            $mw->TF1->Height($self->ScaleHeight());

            $mw->SP->Height($self->ScaleHeight());

$mw->TF2->Resize($mw->ScaleWidth()-$self->TF1->Width()-$mw->SP->Width(),

                                     $mw->ScaleHeight());

}

__END__


Reply via email to