[niepce] Resize the image canvas when the widget is resized.
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce] Resize the image canvas when the widget is resized.
- Date: Mon, 1 Jul 2013 22:30:49 +0000 (UTC)
commit c719a4e85f2f23fcf36a998dbdfdc4be4e67e194
Author: Hubert Figuière <hub figuiere net>
Date: Mon Jul 1 17:34:24 2013 -0400
Resize the image canvas when the widget is resized.
src/niepce/modules/darkroom/imagecanvas.cpp | 10 +++++++++-
src/niepce/modules/darkroom/imagecanvas.hpp | 2 ++
2 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/src/niepce/modules/darkroom/imagecanvas.cpp b/src/niepce/modules/darkroom/imagecanvas.cpp
index c077f95..6f33ec9 100644
--- a/src/niepce/modules/darkroom/imagecanvas.cpp
+++ b/src/niepce/modules/darkroom/imagecanvas.cpp
@@ -40,6 +40,7 @@ namespace dr {
ImageCanvas::ImageCanvas()
: m_need_redisplay(true),
+ m_resized(false),
m_zoom_mode(ZOOM_MODE_FIT)
{
}
@@ -109,6 +110,12 @@ Cairo::RefPtr<Cairo::ImageSurface> ImageCanvas::_get_error_placeholder()
return s;
}
+void ImageCanvas::on_size_allocate(Gtk::Allocation & allocation)
+{
+ m_resized = true;
+ DrawingArea::on_size_allocate(allocation);
+}
+
bool ImageCanvas::on_draw(const Cairo::RefPtr<Cairo::Context>& context)
{
// no image, just pass.
@@ -117,7 +124,7 @@ bool ImageCanvas::on_draw(const Cairo::RefPtr<Cairo::Context>& context)
return false;
}
- if(m_need_redisplay) {
+ if(m_need_redisplay || m_resized) {
_redisplay();
Cairo::RefPtr<Cairo::ImageSurface> img_s;
@@ -186,6 +193,7 @@ bool ImageCanvas::on_draw(const Cairo::RefPtr<Cairo::Context>& context)
// sc->stroke();
m_need_redisplay = false;
+ m_resized = false;
}
context->set_source(m_backingstore, 0, 0);
diff --git a/src/niepce/modules/darkroom/imagecanvas.hpp b/src/niepce/modules/darkroom/imagecanvas.hpp
index df60ff2..1c29193 100644
--- a/src/niepce/modules/darkroom/imagecanvas.hpp
+++ b/src/niepce/modules/darkroom/imagecanvas.hpp
@@ -54,6 +54,7 @@ public:
return m_zoom_mode;
}
protected:
+ virtual void on_size_allocate(Gtk::Allocation & allocation);
virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
private:
void invalidate();
@@ -69,6 +70,7 @@ private:
Cairo::RefPtr<Cairo::ImageSurface> _get_error_placeholder();
bool m_need_redisplay;
+ bool m_resized;
ZoomMode m_zoom_mode;
ncr::Image::Ptr m_image;
Cairo::RefPtr<Cairo::Surface> m_backingstore;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]