[niepce] Resize the image canvas when the widget is resized.



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]