[Gtk (gtkmm)] TextView verbreitert in ScrolledWindow verbreitert sich ungewollt automatisch



  • Wie bereits im Titel steht, verbreitert sich mein TextView ungewollt, wenn mehr Zeichen eingegeben werden als eine Zeile fassen kann. Ich möchte aber, dass entsprechend umgebrochen wird, wenn zu viele Zeichen eingegeben werden. Dafür hab ich 1. angegeben, dass horizontal nicht gescrollt werden soll und vertikal nur bei Bedarf (automatisch). Außerdem hab ich eben WRAP_WORD_CHAR angegeben, damit entsprechend umgebrochen wird. Code sagt mehr als tausend Worte, hier ist er (die main.cpp ist wohl eher uninteressant, sind nur die drei Zeilen zum Starten des GTK-Loops mit meiner Fenster-Klasse):

    main_window.cpp:

    #include "main_window.h"
    
    main_window::main_window()
    {
        this->oScrollWnd.add(this->txtChat);
        this->add(this->oScrollWnd);
    
        this->oScrollWnd.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
        this->txtChat.set_wrap_mode(Gtk::WRAP_WORD_CHAR);
    
        this->oScrollWnd.show();
        this->txtChat.show();
    }
    

    main_window.h:

    #ifndef MAIN_WINDOW_H
        #define MAIN_WINDOW_H
    
        #include <gtkmm/window.h>
        #include <gtkmm/main.h>
        #include <gtkmm/scrolledwindow.h>
        #include <gtkmm/textview.h>
    
        class main_window : public Gtk::Window
        {
            private:
                Gtk::ScrolledWindow oScrollWnd;
                Gtk::TextView txtChat;
    
            public:
                main_window();
        };
    #endif
    

    Hab heute meine ersten Schritte in GTK gemacht, also seid gnädig zu mir 😃

    // Edit

    Problem gelöst! Man muss einfach zweimal "Gtk::POLICY_AUTOMATIC" angeben, also so:

    this->oScrollWnd.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
    

    Ist zwar für mich unlogisch, da ich davon ausgegangen bin, dass dann zusätzlich horizontal gescrollt wird, aber dem ist wohl nicht so. Kann jemand erklären wieso das so ist?


Anmelden zum Antworten