Re: Need help with window-state-event

On Sun, 2011-11-20 at 12:57 +0100, Bernhard Schuster wrote:
2011/11/20 Dipesh Sudershan <d1p3shn0mad gmail com>:
On Sun, 2011-11-20 at 12:29 +0100, Bernhard Schuster wrote:
2011/11/20 Dipesh Sudershan <d1p3shn0mad gmail com>:
On Sun, 2011-11-20 at 11:55 +0100, Bernhard Schuster wrote:
Screw it, replace the "|" with an "&". Sorry screwed this up.


This is working fine. But i still can't solve the problem i have.

I have a gtkimage inside an eventbox. the eventbox inside a gtklayout
and finally the gtklayout inside a scrolledwindow. When the toplevel
window is maximized, i requested for allocated size of the gtkimage,
eventbox, gtklayout and scrolledwindow. the allocated sizes were the
same as when the window was unmaximized. When the window is maximized,
shouldn't the sizes of the childwidgets expand?

gtk_box_pack_start(GTK_BOX(vbox), scrolledwindow, TRUE, TRUE, 0);

This is how the scrolledwindow is packed into the main window.

To get the size in Gtk 2.x you need to create a workaround as shown in
this examples (code I wrote & used some time ago for a legacy gtk2
project), size allocation returns not what you desire: &

In the gtk3 there is a simple function call:

Both work just fine


Bernhard Schuster

I'm using gtk-3.0. gtk_widget_get_allocated width and
gtk_widget_get_allocated height are not working. I'm not get getting the
size of the child widgets when the main window is maximized.

I will try to explain better..

I have a gtkwindow which contains the scrolled window.
I have connected configure-event with the gtkwindow and that works fine.
I get correct allocated sizeds from the functions mentioned above.
But with the window-state-event, i'm not getting correct values.
here's the code for the window-state-event handler function..
static gboolean window_state_event_handler(gtkWidget *widget,
GdkEventWindowState *event) {
if ( event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED ) {
   int width, height;
   //GtkAllocation allocate;
   //width = allocate.width;
   //height = allocate.height;
   width = gtk_widget_get_allocated_width(currentjob->mw->layout);
   height = gtk_widget_get_allocated_height(currentjob->mw->layout);
   printf("%dx%d\n", width, height);
return FALSE;

Try to make it the callback execute last within the event loop (use
the g_signal_connect_run_last or similar), this may fix (totally wild


Bernhard Schuster

I tried g_signal_connect_after, but that didn't work.

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