Re: Graphical glitch in a scrolled window



On Mon, 2008-07-28 at 15:35 +0200, Tian wrote:
Hello,

As I already answered (by mistake) only to Muppet, I'll open a bug to
Gtk+. I just first need to create the C version.

But in the meantime, I'd really appreciate a workaround.

I worked around it by using a simple DrawingArea instead of a
ScrolledWindow. You just need to add the scrollbars yourself, and then
draw on the DrawingArea according to the position of the scrollbars.

That ones seems to be a little complicated. And I will need 2 scrollbars.

I had to subclass a VBox so that it could be added directly to a
ScrolledWindow (and not via a Viewport) :

package ViewVBox;
use Glib::Object::Subclass
Gtk2::VBox::,
    signals => {
            set_scroll_adjustments => {
                    class_closure => sub {},
                    flags         => [qw(run-last action)],
                    return_type   => undef,
                    param_types   => [Gtk2::Adjustment::,Gtk2::Adjustment::],
            },
    },


This solution seems to be a really interesting one. But unfortunately, I
didn't manage to make it works with the simple example I sent. I even had
a look to gmusicbrowser source code to check if I missed something.

Could you please try to change the sample program I sent to include this
workaround and make it working as expected. Thanks in advance.

Well the 2 solutions are the same, it's just that you need a small
additional trick to be able to use the ScrolledWindow without a
ViewPort, but you can probably just use a Table and 2 scrollbars anyway.

Actually, I didn't looked at your code before for my first reply, I
thought you were drawing everything yourself instead of using packed
GtkImages, so my solution is more different from your code than I
thought.
My solution is a bit more involved, so I don't know if it will interest
you, but it scales much better. Packing lots of GtkImages seems like a
waste. Also it gives you much more control.

Instead of changing your sample program, I've made a small example based
on a sightly modified Mosaic class I use in my program.
The attached example display thumbnails of pictures in the current
folder or folder passed as first parameter. Use in in a folder with lots
of pictures. Pictures are only loaded as needed, with a simple cache
system that keeps the last ~100 pixbufs. You can select multiple
pictures with shift and control.
You can have callbacks for selected, activated and menu (right-click).
It would be cleaner to create signals rather than passing the callbacks
to new().
I've commented out the code that creates tooltips.

I think you should be able to use this in your program, simply by
changing the way pixbufs are made and a few other small changes. Ask me
if you are having trouble using it.

Quentin

Attachment: standalone_mosaic.pl
Description: Perl program



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]