Re: Connecting to Configure signal event



On 11/27/2013 12:59 PM, Kjell Ahlstedt wrote:

2013-11-26 22:37, a skrev:
On 11/26/2013 08:33 AM, Kjell Ahlstedt wrote:

2013-11-26 05:09, a skrev:
Hi,

I'm trying to connect to the configure signal event(signal_configure_event()), in the documentation I read that you have to enable Gdk::STRUCTURE_MASK, and I think that is the problem I am having. I tried do it several different ways, like this:

this->add_events(Gdk::STRUCTURE_MASK);
Gtk::Window::add_events(Gdk::STRUCTURE_MASK);
MainWindow::add_events(Gdk::STRUCTURE_MASK); //I think they are all synonyms, but just in case they weren't

and I tried using set_events() function too. Is this the correct way to enable STRUCTURE_MASK?

Thank you.

Tim O.
Have you read https://developer.gnome.org/gtkmm-tutorial/stable/sec-xeventsignals.html.en#signal-handler-sequence and added an after = false parameter in your call to signal_configure_event().connect()?

Kjell

Thank you for the link, but I recently just read that using the configure signal could have performance problems, and I read in an old mailing list that signal_expose_event should be used, which is now signal_draw. So instead I was thinking of using signal_size_allocate. Because all I really want is just the window's size. So which one of these would have better for getting the window's size and then increases a Gtk::Entry width. Thank you.

Tim O.
Is this a continuation of your question in https://mail.gnome.org/archives/gtkmm-list/2013-November/msg00070.html ?
I made a small test with the example program in https://git.gnome.org/browse/gtkmm-documentation/tree/examples/book/entry/simple?h=master
I changed the vertical box to a horizontal box. The Entry widget expands with the window if it's added to the box with pack_start(m_Entry, Gtk::PACK_EXPAND_WIDGET). If you want the Entry to get all extra space, you should add other widgets to the box with Gtk::PACK_SHRINK.

If you can't get this to work, can you post a small program here on the mailing list? A program that does not behave the way you want, when its window is expanded.

Kjell
Here is the small program where the Gtk::Entry does not increase when window increases.

//Example.cc
#include "examplewindow.h"
#include <iostream>

ExampleWindow::ExampleWindow()
: m_VBox(Gtk::ORIENTATION_VERTICAL),
  m_HBox_entry(Gtk::ORIENTATION_HORIZONTAL),
  m_Label("Label")
{
  set_size_request(200, 100);
  set_title("Gtk::Entry");

  add(m_VBox);
 
  m_HBox_entry.set_halign(Gtk::ALIGN_CENTER);
  m_HBox_entry.set_margin_top(30);
  m_HBox_entry.set_margin_bottom(30);
 
  m_VBox.add(m_HBox_entry);

  m_Entry.set_max_length(50);
  m_Entry.set_text("hello");
  m_Entry.set_text(m_Entry.get_text() + " world");
  m_Entry.select_region(0, m_Entry.get_text_length());
  m_HBox_entry.pack_start(m_Label);
  m_HBox_entry.pack_start(m_Entry, Gtk::PACK_EXPAND_WIDGET);

  show_all_children();
}

ExampleWindow::~ExampleWindow()
{
}

//example.h
#ifndef GTKMM_EXAMPLE_HELLOWORLD_H
#define GTKMM_EXAMPLE_HELLOWORLD_H

#include <gtkmm.h>

class ExampleWindow : public Gtk::Window
{
public:
  ExampleWindow();
  virtual ~ExampleWindow();

protected:
  Gtk::Box m_HBox_entry;
  Gtk::Box m_VBox;
  Gtk::Entry m_Entry;
  Gtk::Label m_Label;
};

#endif // GTKMM_EXAMPLE_HELLOWORLD_H

I figured out that the line m_HBox_entry.set_halign(Gtk::ALIGN_CENTER); is making the Entry box not increasing.


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