Re: Add Gtk::TextView to Gtk::Grid

Kjell Ahlstedt via gtkmm-list <[email protected]> Thu, 6 Oct 2022 15:42:46 +0200
Newsgroups gmane.comp.gnome.gtkmm
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--===============3753537706764200596==
Content-Type: multipart/alternative;
 boundary="------------Jup7V4oXZILGRpvpK4ef7Mgk"
Content-Language: en-US

This is a multi-part message in MIME format.
--------------Jup7V4oXZILGRpvpK4ef7Mgk
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

set_child(m_grid); shows that this is gtkmm4.

I made some tests with the TextView example in gtkmm-documentation,

https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/tree/master/examples/book/textview

1. Replaced Gtk::Box m_VBox; by Gtk::Grid m_grid; The TextView is a 
child of a ScrolledWindow, which is a child of the Grid, which is the 
child of the window.
The text in the TextView was shown.

2. Removed the ScrolledWindow.
The TextView was not shown. Or, rather, it was minimized.

3. Added m_TextView.set_expand();
The TextView was shown again.

Den 2022-10-06 kl. 13:00, skrev Rodolfo Ribeiro Gomes:
> If you are gtkmm3, widgets are hidden by default.
> You should call Gtk::Container::show_all_children() or 
> Gtk::Widget::show_all().
>
> AFAIK, in gtkmm4 this isn't necessary anymore, as widgets are 
> (finally) visible by default.
>
> Em qui., 6 de out. de 2022 às 07:33, Bill Greene via gtkmm-list 
> <[email protected]> escreveu:
>
>     Thanks for taking a look at this.
>
>     Unfortunately, even after I make the TextView   a class member, I
>     still don't see the text displayed in the window.
>     A concise description of the problem is this:
>     If I make the TextView a child of the window, the text is
>     displayed. If I make the TextView a child of a Grid, and the
>     Grid a child of the window, the text is not displayed.
>
>     I am assuming there might be some property of the Grid I need to set?
>
>     On Wed, Oct 5, 2022 at 12:40 PM Kjell Ahlstedt
>     <[email protected]> wrote:
>
>         You have declared the TextView  as a local variable in the
>         constructor.
>         It will be deleted when the constructor finishes. You must either
>         declared it in your window class, like the buttons in
>
>         https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/blob/master/examples/book/grid/examplewindow.h
>
>         or create it with Gtk::make_managed() in the constructor, like
>         the button in
>
>         https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/blob/master/examples/book/scrolledwindow/examplewindow.cc
>
>         Den 2022-10-05 kl. 17:00, skrev Bill Greene via gtkmm-list:
>         > I am trying to add a TextView instance to a Grid. But when I
>         display
>         > the window, it is
>         > empty. The Grid examples I have seen add buttons to the grid
>         and these
>         > work fine
>         > for me. But I don't understand the difference between adding
>         a button
>         > and adding
>         > a TextView. If anyone can help me with this, I
>         would appreciate it.
>         >
>         > Here is my sample code (part of the constructor for my window):
>         >
>         >   set_child(m_grid);
>         >   Gtk::TextView tc;
>         >   Glib::RefPtr<Gtk::TextBuffer> tb = Gtk::TextBuffer::create();
>         >   std::string msg("cell 1,1");
>         >   auto it = tb->insert(tb->begin(), msg);
>         >   tc.set_buffer(tb);
>         >   m_grid.attach(tc, 0, 0);
>         >   m_grid.set_visible();
>         >
>
>
--------------Jup7V4oXZILGRpvpK4ef7Mgk
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>set_child(m_grid); shows that this is gtkmm4.</p>
    <p>I made some tests with the TextView example in
      gtkmm-documentation,</p>
    <p><a class="moz-txt-link-freetext" href="https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/tree/master/examples/book/textview">https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/tree/master/examples/book/textview</a></p>
    <p>1. Replaced Gtk::Box m_VBox; by Gtk::Grid m_grid; The TextView is
      a child of a ScrolledWindow, which is a child of the Grid, which
      is the child of the window.<br>
      The text in the TextView was shown.</p>
    <p>2. Removed the ScrolledWindow.<br>
      The TextView was not shown. Or, rather, it was minimized.</p>
    <p>3. Added m_TextView.set_expand();<br>
      The TextView was shown again.<br>
    </p>
    <div class="moz-cite-prefix">Den 2022-10-06 kl. 13:00, skrev Rodolfo
      Ribeiro Gomes:<br>
    </div>
    <blockquote type="cite"
cite="mid:CADvm5Jow=w6MTcGoizWTZo5TXry8HONZ8SP4XZ=t=uC3FY7gaw@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div>If you are gtkmm3, widgets are hidden by default.</div>
        <div>You should call Gtk::Container::show_all_children() or
          Gtk::Widget::show_all().</div>
        <div><br>
        </div>
        <div>AFAIK, in gtkmm4 this isn't necessary anymore, as widgets
          are (finally) visible by default.<br>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">Em qui., 6 de out. de 2022 às
          07:33, Bill Greene via gtkmm-list &lt;<a
            href="mailto:[email protected]" moz-do-not-send="true"
            class="moz-txt-link-freetext">[email protected]</a>&gt;
          escreveu:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div dir="ltr">Thanks for taking a look at this.
            <div><br>
            </div>
            <div>Unfortunately, even after I make the TextView   a class
              member, I still don't see the text displayed in
              the window.</div>
            <div>A concise description of the problem is this: </div>
            <div>If I make the TextView a child of the window, the text
              is displayed. If I make the TextView a child of a Grid,
              and the</div>
            <div>Grid a child of the window, the text is not displayed.</div>
            <div><br>
            </div>
            <div>I am assuming there might be some property of the Grid
              I need to set?</div>
          </div>
          <br>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Wed, Oct 5, 2022 at
              12:40 PM Kjell Ahlstedt &lt;<a
                href="mailto:[email protected]" target="_blank"
                moz-do-not-send="true" class="moz-txt-link-freetext">[email protected]</a>&gt;
              wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">You have declared the
              TextView  as a local variable in the constructor. <br>
              It will be deleted when the constructor finishes. You must
              either <br>
              declared it in your window class, like the buttons in<br>
              <br>
              <a
href="https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/blob/master/examples/book/grid/examplewindow.h"
                rel="noreferrer" target="_blank" moz-do-not-send="true"
                class="moz-txt-link-freetext">https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/blob/master/examples/book/grid/examplewindow.h</a><br>
              <br>
              or create it with Gtk::make_managed() in the constructor,
              like the button in<br>
              <br>
              <a
href="https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/blob/master/examples/book/scrolledwindow/examplewindow.cc"
                rel="noreferrer" target="_blank" moz-do-not-send="true"
                class="moz-txt-link-freetext">https://gitlab.gnome.org/GNOME/gtkmm-documentation/-/blob/master/examples/book/scrolledwindow/examplewindow.cc</a><br>
              <br>
              Den 2022-10-05 kl. 17:00, skrev Bill Greene via
              gtkmm-list:<br>
              &gt; I am trying to add a TextView instance to a Grid. But
              when I display <br>
              &gt; the window, it is<br>
              &gt; empty. The Grid examples I have seen add buttons to
              the grid and these <br>
              &gt; work fine<br>
              &gt; for me. But I don't understand the difference between
              adding a button <br>
              &gt; and adding<br>
              &gt; a TextView. If anyone can help me with this, I
              would appreciate it.<br>
              &gt;<br>
              &gt; Here is my sample code (part of the constructor for
              my window):<br>
              &gt;<br>
              &gt;   set_child(m_grid);<br>
              &gt;   Gtk::TextView tc;<br>
              &gt;   Glib::RefPtr&lt;Gtk::TextBuffer&gt; tb =
              Gtk::TextBuffer::create();<br>
              &gt;   std::string msg("cell 1,1");<br>
              &gt;   auto it = tb-&gt;insert(tb-&gt;begin(), msg);<br>
              &gt;   tc.set_buffer(tb);<br>
              &gt;   m_grid.attach(tc, 0, 0);<br>
              &gt;   m_grid.set_visible();<br>
              &gt;<br>
            </blockquote>
          </div>
          <br>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>

--------------Jup7V4oXZILGRpvpK4ef7Mgk--

--===============3753537706764200596==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list

--===============3753537706764200596==--