Bartosz Kostrzewa wrote:
> Hi,
>
> in gimmage I catch the configure_event signal in order to resize the
> image to fit the viewing area if the user resizes the window.
>
> I query the width and height of an internal widget (a scrolled window)
> but connect to the top window's configure_event signal because for some
> strange reason the internal widget does not emit the signal (even though
> it is clearly resized together with the top window). This of course
> brings the problem that the resizing is not actually finished when I
> query width/height and I zoom the image to the wrong size.
>
> I even tried working around it by querying only the size of the top
> level window and subtracting the height/width of all other widgets, but
> even that does not give the correct values. Uncommenting the iteration
> forcing does not help either!
>
> ----------------
>
> // AppWindow.cpp
>
> signal_configure_event().connect_notify(sigc::mem_fun(*this,&AppWindow::on_my_configure_event));
>
> [...]
>
> void AppWindow::on_my_configure_event( GdkEventConfigure* event )
> {
> std::cout << "configure event" << std::endl;
> //while(Gtk::Main::events_pending()) Gtk::Main::iteration();
> ImageBox.ScaleImage2(ImageScroller.get_width()-4,
> ImageScroller.get_height()-4,&scalefactor);
> }
Uhm, "-4" may be good for you environment, but you can't assume that
it's good for _all_ configurations.
>
> -----------
>
> when I do this instead, nothing happens, but it would be REALLY great if
> this worked!
>
> ImageScroller.signal_configure_event()...
>
> ------------
>
>
> Any ideas?
IMO you should use signal_check_resize() for the main window; for instance:
AppWindow::AppWindow(/*...*/)
// ...
{
// ...
signal_check_resize().connect(sigc::mem_fun(*this,
&AppWindow::on_window_resize));
// ...
}
void AppWindow::on_window_resize()
{
// for ImageScroller I meant the ScrolledWindow:
int width =
static_cast<int>(ImageScroller.get_hadjustment()->get_page_size();
int height =
static_cast<int>(ImageScroller.get_vadjustment()->get_page_size();
ImageBox.ScaleImage2(width, height, &scalefactor);
}
I hope this is what you're looking for,
>
> -Bartek
s.
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list