summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-06-09 15:43:34 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-06-09 15:43:34 +0000
commit3c3a754c162492932c8037100155a0cd7281e437 (patch)
treee904cc141533d600e6beafd3bd4b87775daf638e /src
parentFix build failure with old GtkAdjustment API (diff)
downloadinkscape-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.cpp30
-rw-r--r--src/svg-view-widget.cpp11
-rw-r--r--src/ui/previewholder.cpp8
-rw-r--r--src/ui/previewholder.h2
-rw-r--r--src/ui/widget/imagetoggler.cpp46
-rw-r--r--src/ui/widget/imagetoggler.h16
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,