Re: Calculating the size of TextView



I've run into this before myself [1]. Seems to happen only when you add the
Textview to an already show()n parent, as you are doing by adding it with a
button click.

I gave up and used a label. They work fine.

[1]
https://mail.gnome.org/archives/gtk-devel-list/2012-September/msg00034.html


On Sun, Nov 18, 2012 at 12:28 PM, Johan Mattsson <johan mattsson m gmail com
wrote:

Hi
I am working on a GTK application that creates a form with many text
areas in it. It seems to work fine until I add my widgets to a
scrolled pane. Like this:

test.vala:

using Gtk;

class MainWindow : Gtk.Window {

        Box vbox = new Box (Orientation.VERTICAL, 5);

        public MainWindow () {
                set_default_size (700, 600);

                Button b = new Button ();
                b.clicked.connect (add_text_field);
                vbox.pack_start (b, false, false, 0);

                ScrolledWindow scrolled = new ScrolledWindow (null, null);
                scrolled.set_policy (PolicyType.AUTOMATIC,
PolicyType.AUTOMATIC);
                scrolled.add_with_viewport (vbox);

                add (scrolled);
                show_all ();
        }

        void add_text_field () {
                TextView text_view1 = new TextView ();
                TextBuffer text_buffer = new TextBuffer (null);
                text_buffer.set_text ("""A long text ... A long text ... A
long text
... A long text ... A long text ... A long text ... A long text ... A
long text ... A long text ... A long text ... A long text ... A long
text ... A long text ... A long text ... A long text ... A long text
... A long text ... A long text ... A long text ... A long text ... A
long text ... A long text ... A long text ... A long text ... A long
text ... A long text ... A long text ... A long text ... A long text
... A long text ... A long text ... A long text ... A long text ... A
long text ... A long text ... A long text ... A long text ... A long
text ... A long text """);

                text_view1.set_wrap_mode (WrapMode.WORD);
                text_view1.set_buffer (text_buffer);

                vbox.pack_start (new Label ("New text view"), false,
false, 0);
                vbox.pack_start (text_view1, false, false, 0);
                show_all ();
        }
}

public static void main(string[] args) {
        MainWindow m;
        Gtk.init (ref args);
        m = new MainWindow ();
        Gtk.main ();
}

Compile with valac test.vala --pkg gtk+-3.0

The height of the TextView is twice the number of lines in the box
when TextView is added to the box. GTK will resize TextView when it
gets focus.
Is there a way to force GTK to recalculate the size of TextView before
it receives focus?
/Johan
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list




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