summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-07-23 16:19:50 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-07-23 16:19:50 +0000
commit1c78495f3dd05febf84085cb665fc83d338ec2c3 (patch)
tree5a776301cbcfc87435c8d26ffee557847400e47d /src
parentAbort configuration if GTK+ 3 dependencies are unfulfilled (diff)
downloadinkscape-1c78495f3dd05febf84085cb665fc83d338ec2c3.tar.gz
inkscape-1c78495f3dd05febf84085cb665fc83d338ec2c3.zip
Drop use of size-request in button and sp-widget (GTK3)
(bzr r11564)
Diffstat (limited to 'src')
-rw-r--r--src/widgets/button.cpp61
-rw-r--r--src/widgets/sp-widget.cpp38
2 files changed, 62 insertions, 37 deletions
diff --git a/src/widgets/button.cpp b/src/widgets/button.cpp
index 4b152f914..45356601b 100644
--- a/src/widgets/button.cpp
+++ b/src/widgets/button.cpp
@@ -29,8 +29,6 @@ static void sp_button_class_init (SPButtonClass *klass);
static void sp_button_init (SPButton *button);
static void sp_button_dispose(GObject *object);
-static void sp_button_size_request (GtkWidget *widget, GtkRequisition *requisition);
-
#if GTK_CHECK_VERSION(3,0,0)
static void sp_button_get_preferred_width(GtkWidget *widget,
gint *minimal_width,
@@ -39,6 +37,8 @@ static void sp_button_get_preferred_width(GtkWidget *widget,
static void sp_button_get_preferred_height(GtkWidget *widget,
gint *minimal_height,
gint *natural_height);
+#else
+static void sp_button_size_request (GtkWidget *widget, GtkRequisition *requisition);
#endif
static void sp_button_clicked (GtkButton *button);
@@ -126,13 +126,47 @@ static void sp_button_dispose(GObject *object)
((GObjectClass *) (parent_class))->dispose(object);
}
-static void
-sp_button_size_request (GtkWidget *widget, GtkRequisition *requisition)
+
+
+#if GTK_CHECK_VERSION(3,0,0)
+static void sp_button_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
{
- GtkWidget *child;
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN (widget));
+ GtkStyle *style = gtk_widget_get_style(widget);
+
+ if (child) {
+ gtk_widget_get_preferred_width(GTK_WIDGET(child), minimal_width, natural_width);
+ } else {
+ *minimal_width = 0;
+ *natural_width = 0;
+ }
+
+ *minimal_width += 2 + 2 * MAX(2, style->xthickness);
+ *natural_width += 2 + 2 * MAX(2, style->xthickness);
+}
+
+static void sp_button_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
+{
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN (widget));
+ GtkStyle *style = gtk_widget_get_style(widget);
+
+ if (child) {
+ gtk_widget_get_preferred_height(GTK_WIDGET(child), minimal_height, natural_height);
+ } else {
+ *minimal_height = 0;
+ *natural_height = 0;
+ }
+
+ *minimal_height += 2 + 2 * MAX(2, style->ythickness);
+ *natural_height += 2 + 2 * MAX(2, style->ythickness);
+
+}
+#else
+static void sp_button_size_request(GtkWidget *widget, GtkRequisition *requisition)
+{
+ GtkWidget *child = gtk_bin_get_child (GTK_BIN (widget));
GtkStyle *style = gtk_widget_get_style (widget);
- child = gtk_bin_get_child (GTK_BIN (widget));
if (child) {
gtk_widget_size_request (GTK_WIDGET (child), requisition);
} else {
@@ -143,21 +177,6 @@ sp_button_size_request (GtkWidget *widget, GtkRequisition *requisition)
requisition->width += 2 + 2 * MAX (2, style->xthickness);
requisition->height += 2 + 2 * MAX (2, style->ythickness);
}
-
-#if GTK_CHECK_VERSION(3,0,0)
-static void sp_button_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
-{
- GtkRequisition requisition;
- sp_button_size_request(widget, &requisition);
- *minimal_width = *natural_width = requisition.width;
-}
-
-static void sp_button_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
-{
- GtkRequisition requisition;
- sp_button_size_request(widget, &requisition);
- *minimal_height = *natural_height = requisition.height;
-}
#endif
static void
diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp
index 58b33a489..8d840da25 100644
--- a/src/widgets/sp-widget.cpp
+++ b/src/widgets/sp-widget.cpp
@@ -41,7 +41,7 @@ public:
static void dispose(GObject *object);
static void show(GtkWidget *widget);
static void hide(GtkWidget *widget);
- static void sizeRequest(GtkWidget *widget, GtkRequisition *requisition);
+
#if GTK_CHECK_VERSION(3,0,0)
static void getPreferredWidth(GtkWidget *widget,
gint *minimal_width,
@@ -52,8 +52,10 @@ public:
gint *natural_height);
static gboolean draw(GtkWidget *widget, cairo_t *cr);
#else
+ static void sizeRequest(GtkWidget *widget, GtkRequisition *requisition);
static gboolean expose(GtkWidget *widget, GdkEventExpose *event);
#endif
+
static void sizeAllocate(GtkWidget *widget, GtkAllocation *allocation);
static void modifySelectionCB(Application *inkscape, Selection *selection, guint flags, SPWidget *spw);
static void changeSelectionCB(Application *inkscape, Selection *selection, SPWidget *spw);
@@ -247,31 +249,35 @@ gboolean SPWidgetImpl::expose(GtkWidget *widget, GdkEventExpose *event)
return FALSE;
}
-void SPWidgetImpl::sizeRequest(GtkWidget *widget, GtkRequisition *requisition)
+#if GTK_CHECK_VERSION(3,0,0)
+void SPWidgetImpl::getPreferredWidth(GtkWidget *widget, gint *minimal_width, gint *natural_width)
{
GtkBin *bin = GTK_BIN(widget);
GtkWidget *child = gtk_bin_get_child(bin);
- if (child) {
- gtk_widget_size_request(child, requisition);
+ if(child) {
+ gtk_widget_get_preferred_width(child, minimal_width, natural_width);
}
}
-#if GTK_CHECK_VERSION(3,0,0)
-void SPWidgetImpl::getPreferredWidth(GtkWidget *widget, gint *minimal_width, gint *natural_width)
+void SPWidgetImpl::getPreferredHeight(GtkWidget *widget, gint *minimal_height, gint *natural_height)
{
- GtkRequisition requisition;
- sizeRequest(widget, &requisition);
- *minimal_width = requisition.width;
- *natural_width = requisition.width;
-}
+ GtkBin *bin = GTK_BIN(widget);
+ GtkWidget *child = gtk_bin_get_child(bin);
-void SPWidgetImpl::getPreferredHeight(GtkWidget *widget, gint *minimal_height, gint *natural_height)
+ if(child) {
+ gtk_widget_get_preferred_height(child, minimal_height, natural_height);
+ }
+}
+#else
+void SPWidgetImpl::sizeRequest(GtkWidget *widget, GtkRequisition *requisition)
{
- GtkRequisition requisition;
- sizeRequest(widget, &requisition);
- *minimal_height = requisition.height;
- *natural_height = requisition.height;
+ GtkBin *bin = GTK_BIN(widget);
+ GtkWidget *child = gtk_bin_get_child(bin);
+
+ if (child) {
+ gtk_widget_size_request(child, requisition);
+ }
}
#endif