diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-09 15:43:34 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2012-06-09 15:43:34 +0000 |
| commit | 3c3a754c162492932c8037100155a0cd7281e437 (patch) | |
| tree | e904cc141533d600e6beafd3bd4b87775daf638e /src | |
| parent | Fix build failure with old GtkAdjustment API (diff) | |
| download | inkscape-3c3a754c162492932c8037100155a0cd7281e437.tar.gz inkscape-3c3a754c162492932c8037100155a0cd7281e437.zip | |
Fix remaining size_request issues for Gtk+ build
(bzr r11475)
Diffstat (limited to 'src')
| -rw-r--r-- | src/display/sp-canvas.cpp | 30 | ||||
| -rw-r--r-- | src/svg-view-widget.cpp | 11 | ||||
| -rw-r--r-- | src/ui/previewholder.cpp | 8 | ||||
| -rw-r--r-- | src/ui/previewholder.h | 2 | ||||
| -rw-r--r-- | src/ui/widget/imagetoggler.cpp | 46 | ||||
| -rw-r--r-- | src/ui/widget/imagetoggler.h | 16 |
6 files changed, 97 insertions, 16 deletions
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index 2d8bb55ad..d966ba6a5 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -256,7 +256,12 @@ public: /** * The canvas widget's size request callback. */ +#if GTK_CHECK_VERSION(3,0,0) + static void getPreferredWidth(GtkWidget *widget, gint *min_w, gint *nat_w); + static void getPreferredHeight(GtkWidget *widget, gint *min_h, gint *nat_h); +#else static void sizeRequest(GtkWidget *widget, GtkRequisition *req); +#endif /** * The canvas widget's size allocate callback. @@ -1224,7 +1229,14 @@ void SPCanvasImpl::classInit(SPCanvasClass *klass) widget_class->realize = SPCanvasImpl::realize; widget_class->unrealize = SPCanvasImpl::unrealize; + +#if GTK_CHECK_VERSION(3,0,0) + widget_class->get_preferred_width = SPCanvasImpl::getPreferredWidth; + widget_class->get_preferred_height = SPCanvasImpl::getPreferredHeight; +#else widget_class->size_request = SPCanvasImpl::sizeRequest; +#endif + widget_class->size_allocate = SPCanvasImpl::sizeAllocate; widget_class->button_press_event = SPCanvasImpl::button; widget_class->button_release_event = SPCanvasImpl::button; @@ -1404,6 +1416,22 @@ void SPCanvasImpl::unrealize(GtkWidget *widget) (* GTK_WIDGET_CLASS(parentClass)->unrealize)(widget); } + +#if GTK_CHECK_VERSION(3,0,0) +void SPCanvasImpl::getPreferredWidth(GtkWidget *widget, gint *minimum_width, gint *natural_width) +{ + static_cast<void>(SP_CANVAS (widget)); + *minimum_width = 256; + *natural_width = 256; +} + +void SPCanvasImpl::getPreferredHeight(GtkWidget *widget, gint *minimum_height, gint *natural_height) +{ + static_cast<void>(SP_CANVAS (widget)); + *minimum_height = 256; + *natural_height = 256; +} +#else void SPCanvasImpl::sizeRequest(GtkWidget *widget, GtkRequisition *req) { static_cast<void>(SP_CANVAS (widget)); @@ -1411,6 +1439,8 @@ void SPCanvasImpl::sizeRequest(GtkWidget *widget, GtkRequisition *req) req->width = 256; req->height = 256; } +#endif + void SPCanvasImpl::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation) { diff --git a/src/svg-view-widget.cpp b/src/svg-view-widget.cpp index 402b65f53..955f1d8fa 100644 --- a/src/svg-view-widget.cpp +++ b/src/svg-view-widget.cpp @@ -147,9 +147,20 @@ static void sp_svg_view_widget_size_request(GtkWidget *widget, GtkRequisition *r SPSVGSPViewWidget *vw = SP_SVG_VIEW_WIDGET (widget); Inkscape::UI::View::View *v = SP_VIEW_WIDGET_VIEW (widget); +#if GTK_CHECK_VERSION(3,0,0) + if (((GtkWidgetClass *) (widget_parent_class))->get_preferred_width && ((GtkWidgetClass *) (widget_parent_class))->get_preferred_width) { + gint width_min, height_min, width_nat, height_nat; + + (* ((GtkWidgetClass *) (widget_parent_class))->get_preferred_width) (widget, &width_min, &width_nat); + (* ((GtkWidgetClass *) (widget_parent_class))->get_preferred_height) (widget, &height_min, &height_nat); + req->width=width_min; + req->height=height_min; + } +#else if (((GtkWidgetClass *) (widget_parent_class))->size_request) { (* ((GtkWidgetClass *) (widget_parent_class))->size_request) (widget, req); } +#endif if (v->doc()) { SPSVGView *svgv; diff --git a/src/ui/previewholder.cpp b/src/ui/previewholder.cpp index d89df1104..e1c2c718a 100644 --- a/src/ui/previewholder.cpp +++ b/src/ui/previewholder.cpp @@ -224,14 +224,14 @@ void PreviewHolder::on_size_allocate( Gtk::Allocation& allocation ) } } -void PreviewHolder::on_size_request( Gtk::Requisition* requisition ) -{ +//void PreviewHolder::on_size_request( Gtk::Requisition* requisition ) +//{ // g_message( "on_size_request(%d, %d)", requisition->width, requisition->height ); - Gtk::VBox::on_size_request( requisition ); +// Gtk::VBox::on_size_request( requisition ); // g_message( " super (%d, %d)", requisition->width, requisition->height ); // g_message(" anchor:%d", _anchor); // g_message(" items:%d", (int)items.size()); -} +//} void PreviewHolder::calcGridSize( const Gtk::Widget* thing, int itemCount, int& width, int& height ) { diff --git a/src/ui/previewholder.h b/src/ui/previewholder.h index 5a0dfc267..b7073024e 100644 --- a/src/ui/previewholder.h +++ b/src/ui/previewholder.h @@ -45,7 +45,7 @@ public: protected: virtual void on_size_allocate( Gtk::Allocation& allocation ); - virtual void on_size_request( Gtk::Requisition* requisition ); +// virtual void on_size_request( Gtk::Requisition* requisition ); private: diff --git a/src/ui/widget/imagetoggler.cpp b/src/ui/widget/imagetoggler.cpp index 73c343887..29907f4c9 100644 --- a/src/ui/widget/imagetoggler.cpp +++ b/src/ui/widget/imagetoggler.cpp @@ -53,13 +53,44 @@ ImageToggler::ImageToggler( char const* on, char const* off) : property_pixbuf() = _property_pixbuf_off.get_value(); } -void -ImageToggler::get_size_vfunc( Gtk::Widget& widget, - const Gdk::Rectangle* cell_area, - int* x_offset, - int* y_offset, - int* width, - int* height ) const + +#if WITH_GTKMM_3_0 +void ImageToggler::get_preferred_height_vfunc(Gtk::Widget& widget, + int& min_h, + int& nat_h) const +{ + Gtk::CellRendererPixbuf::get_preferred_height_vfunc(widget, min_h, nat_h); + + if (min_h) { + min_h += (min_h) >> 1; + } + + if (nat_h) { + nat_h += (nat_h) >> 1; + } +} + +void ImageToggler::get_preferred_width_vfunc(Gtk::Widget& widget, + int& min_w, + int& nat_w) const +{ + Gtk::CellRendererPixbuf::get_preferred_width_vfunc(widget, min_w, nat_w); + + if (min_w) { + min_w += (min_w) >> 1; + } + + if (nat_w) { + nat_w += (nat_w) >> 1; + } +} +#else +void ImageToggler::get_size_vfunc(Gtk::Widget& widget, + const Gdk::Rectangle* cell_area, + int* x_offset, + int* y_offset, + int* width, + int* height ) const { Gtk::CellRendererPixbuf::get_size_vfunc( widget, cell_area, x_offset, y_offset, width, height ); @@ -70,6 +101,7 @@ ImageToggler::get_size_vfunc( Gtk::Widget& widget, *height += (*height) >> 1; } } +#endif #if WITH_GTKMM_3_0 void ImageToggler::render_vfunc( const Cairo::RefPtr<Cairo::Context>& cr, diff --git a/src/ui/widget/imagetoggler.h b/src/ui/widget/imagetoggler.h index 0a20fe7ed..ca1bfd69d 100644 --- a/src/ui/widget/imagetoggler.h +++ b/src/ui/widget/imagetoggler.h @@ -37,16 +37,20 @@ public: protected: - virtual void get_size_vfunc( Gtk::Widget &widget, - Gdk::Rectangle const *cell_area, - int *x_offset, int *y_offset, int *width, int *height ) const; - #if WITH_GTKMM_3_0 virtual void render_vfunc( const Cairo::RefPtr<Cairo::Context>& cr, Gtk::Widget& widget, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, Gtk::CellRendererState flags ); + + virtual void get_preferred_width_vfunc(Gtk::Widget& widget, + int& min_w, + int& nat_w) const; + + virtual void get_preferred_height_vfunc(Gtk::Widget& widget, + int& min_h, + int& nat_h) const; #else virtual void render_vfunc( const Glib::RefPtr<Gdk::Drawable>& window, Gtk::Widget& widget, @@ -54,6 +58,10 @@ protected: const Gdk::Rectangle& cell_area, const Gdk::Rectangle& expose_area, Gtk::CellRendererState flags ); + + virtual void get_size_vfunc( Gtk::Widget &widget, + Gdk::Rectangle const *cell_area, + int *x_offset, int *y_offset, int *width, int *height ) const; #endif virtual bool activate_vfunc(GdkEvent *event, |
