summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2013-01-06 19:53:50 +0000
committerJabiertxo Arraiza Cenoz <jtx@jtx.marker.es>2013-01-06 19:53:50 +0000
commit38cba87ca97f83927c94519eda2c326c8bde16cd (patch)
tree0390c36513eaf3ab61ff9b182000e63bfc592ffe /src
parentFixed StartAnchor continue errors with bspline (diff)
parentvisual bbox minimum width (Bug 1094802) (diff)
downloadinkscape-38cba87ca97f83927c94519eda2c326c8bde16cd.tar.gz
inkscape-38cba87ca97f83927c94519eda2c326c8bde16cd.zip
Update to trunk
(bzr r11950.1.14)
Diffstat (limited to 'src')
-rw-r--r--src/arc-context.cpp22
-rw-r--r--src/color-profile.cpp2
-rw-r--r--src/connector-context.cpp23
-rw-r--r--src/desktop.cpp1
-rw-r--r--src/device-manager.cpp9
-rw-r--r--src/dialogs/dialog-events.cpp17
-rw-r--r--src/dialogs/find.cpp26
-rw-r--r--src/display/sp-canvas.cpp59
-rw-r--r--src/dropper-context.cpp14
-rw-r--r--src/dyna-draw-context.cpp14
-rw-r--r--src/ege-select-one-action.cpp20
-rw-r--r--src/eraser-context.cpp14
-rw-r--r--src/event-context.cpp15
-rw-r--r--src/extension/internal/image-resolution.cpp379
-rw-r--r--src/extension/internal/pdf-input-cairo.cpp8
-rw-r--r--src/extension/internal/pdfinput/pdf-input.cpp6
-rw-r--r--src/extension/internal/vsd-input.cpp2
-rw-r--r--src/helper/unit-menu.cpp14
-rw-r--r--src/ink-comboboxentry-action.cpp10
-rw-r--r--src/select-context.cpp18
-rw-r--r--src/sp-ellipse.cpp1
-rw-r--r--src/sp-item.cpp1
-rw-r--r--src/sp-rect.cpp2
-rw-r--r--src/spiral-context.cpp28
-rw-r--r--src/splivarot.cpp4
-rw-r--r--src/spray-context.cpp34
-rw-r--r--src/star-context.cpp26
-rw-r--r--src/text-context.cpp20
-rw-r--r--src/tweak-context.cpp28
-rw-r--r--src/ui/dialog/debug.cpp2
-rw-r--r--src/ui/dialog/document-properties.cpp2
-rw-r--r--src/ui/dialog/filedialogimpl-gtkmm.cpp16
-rw-r--r--src/ui/dialog/filter-effects-dialog.cpp64
-rw-r--r--src/ui/dialog/filter-effects-dialog.h22
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp1
-rw-r--r--src/ui/dialog/ocaldialogs.cpp49
-rw-r--r--src/ui/dialog/ocaldialogs.h13
-rw-r--r--src/ui/dialog/tile.cpp8
-rw-r--r--src/ui/widget/color-preview.cpp90
-rw-r--r--src/ui/widget/color-preview.h19
-rw-r--r--src/ui/widget/imageicon.cpp6
-rw-r--r--src/ui/widget/object-composite-settings.cpp4
-rw-r--r--src/ui/widget/preferences-widget.cpp34
-rw-r--r--src/ui/widget/preferences-widget.h7
-rw-r--r--src/widgets/button.cpp16
-rw-r--r--src/widgets/desktop-widget.cpp127
-rw-r--r--src/widgets/font-selector.cpp10
-rw-r--r--src/widgets/gradient-image.cpp12
-rw-r--r--src/widgets/gradient-selector.cpp16
-rw-r--r--src/widgets/gradient-vector.cpp14
-rw-r--r--src/widgets/icon.cpp19
-rw-r--r--src/widgets/paint-selector.cpp18
-rw-r--r--src/widgets/pencil-toolbar.cpp4
-rw-r--r--src/widgets/ruler.cpp820
-rw-r--r--src/widgets/ruler.h63
-rw-r--r--src/widgets/select-toolbar.cpp4
-rw-r--r--src/widgets/sp-color-icc-selector.cpp23
-rw-r--r--src/widgets/sp-color-scales.cpp17
-rw-r--r--src/widgets/sp-color-slider.cpp27
-rw-r--r--src/widgets/sp-color-wheel-selector.cpp15
-rw-r--r--src/widgets/sp-widget.cpp2
-rw-r--r--src/widgets/sp-xmlview-attr-list.cpp8
-rw-r--r--src/widgets/sp-xmlview-content.cpp8
-rw-r--r--src/widgets/sp-xmlview-tree.cpp10
-rw-r--r--src/widgets/spinbutton-events.cpp10
-rw-r--r--src/widgets/spiral-toolbar.cpp12
-rw-r--r--src/widgets/star-toolbar.cpp4
-rw-r--r--src/widgets/widget-sizes.h5
68 files changed, 1409 insertions, 1009 deletions
diff --git a/src/arc-context.cpp b/src/arc-context.cpp
index 9675df8e3..c35e0041f 100644
--- a/src/arc-context.cpp
+++ b/src/arc-context.cpp
@@ -86,10 +86,10 @@ GType sp_arc_context_get_type()
static void sp_arc_context_class_init(SPArcContextClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*) g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_arc_context_dispose;
@@ -127,8 +127,8 @@ static void sp_arc_context_finish(SPEventContext *ec)
sp_arc_finish(ac);
ac->sel_changed_connection.disconnect();
- if (((SPEventContextClass *) parent_class)->finish) {
- ((SPEventContextClass *) parent_class)->finish(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->finish) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->finish(ec);
}
}
@@ -174,8 +174,8 @@ static void sp_arc_context_setup(SPEventContext *ec)
SPArcContext *ac = SP_ARC_CONTEXT(ec);
Inkscape::Selection *selection = sp_desktop_selection(ec->desktop);
- if (((SPEventContextClass *) parent_class)->setup) {
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
}
ec->shape_editor = new ShapeEditor(ec->desktop);
@@ -219,8 +219,8 @@ static gint sp_arc_context_item_handler(SPEventContext *event_context, SPItem *i
break;
}
- if (((SPEventContextClass *) parent_class)->item_handler) {
- ret = ((SPEventContextClass *) parent_class)->item_handler(event_context, item, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler) {
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler(event_context, item, event);
}
return ret;
@@ -401,8 +401,8 @@ static gint sp_arc_context_root_handler(SPEventContext *event_context, GdkEvent
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->root_handler) {
- ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) {
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event);
}
}
diff --git a/src/color-profile.cpp b/src/color-profile.cpp
index 981d527f0..42b6e86dd 100644
--- a/src/color-profile.cpp
+++ b/src/color-profile.cpp
@@ -5,7 +5,7 @@
#define noDEBUG_LCMS
#include <glib/gstdio.h>
-#include <sys/fcntl.h>
+#include <fcntl.h>
#include <gdkmm/color.h>
#include <glib/gi18n.h>
diff --git a/src/connector-context.cpp b/src/connector-context.cpp
index 5f87ab712..db2e049c7 100644
--- a/src/connector-context.cpp
+++ b/src/connector-context.cpp
@@ -287,13 +287,10 @@ sp_connector_context_get_type(void)
static void
sp_connector_context_class_init(SPConnectorContextClass *klass)
{
- GObjectClass *object_class;
- SPEventContextClass *event_context_class;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- object_class = (GObjectClass *) klass;
- event_context_class = (SPEventContextClass *) klass;
-
- parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_connector_context_dispose;
@@ -405,8 +402,8 @@ sp_connector_context_setup(SPEventContext *ec)
SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(ec);
SPDesktop *dt = ec->desktop;
- if (((SPEventContextClass *) parent_class)->setup) {
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
}
cc->selection = sp_desktop_selection(dt);
@@ -514,8 +511,8 @@ sp_connector_context_finish(SPEventContext *ec)
spcc_connector_finish(cc);
cc->state = SP_CONNECTOR_CONTEXT_IDLE;
- if (((SPEventContextClass *) parent_class)->finish) {
- ((SPEventContextClass *) parent_class)->finish(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->finish) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->finish(ec);
}
if (cc->selection) {
@@ -735,7 +732,7 @@ sp_connector_context_root_handler(SPEventContext *ec, GdkEvent *event)
if (!ret) {
gint (*const parent_root_handler)(SPEventContext *, GdkEvent *)
- = ((SPEventContextClass *) parent_class)->root_handler;
+ = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler;
if (parent_root_handler) {
ret = parent_root_handler(ec, event);
}
@@ -1939,12 +1936,12 @@ void cc_selection_set_avoid(bool const set_avoid)
Inkscape::Selection *selection = sp_desktop_selection(desktop);
- GSList *l = (GSList *) selection->itemList();
+ GSList *l = const_cast<GSList *>(selection->itemList());
int changes = 0;
while (l) {
- SPItem *item = (SPItem *) l->data;
+ SPItem *item = SP_ITEM(l->data);
char const *value = (set_avoid) ? "true" : NULL;
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 2f8f3e4b6..a3f607913 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -1139,6 +1139,7 @@ SPDesktop::zoom_drawing()
SPItem *docitem = doc()->getRoot();
g_return_if_fail (docitem != NULL);
+ docitem->bbox_valid = FALSE;
Geom::OptRect d = docitem->desktopVisualBounds();
/* Note that the second condition here indicates that
diff --git a/src/device-manager.cpp b/src/device-manager.cpp
index 29efa2627..a9394a5f6 100644
--- a/src/device-manager.cpp
+++ b/src/device-manager.cpp
@@ -42,12 +42,7 @@ static bool isValidDevice(GdkDevice *device)
gboolean source_matches = (gdk_device_get_source (device) == fakeout[i].source);
gboolean mode_matches = (gdk_device_get_mode (device) == fakeout[i].mode);
gboolean num_axes_matches = (gdk_device_get_n_axes (device) == fakeout[i].num_axes);
-
-#if GTK_CHECK_VERSION (2, 24, 0)
gboolean num_keys_matches = (gdk_device_get_n_keys (device) == fakeout[i].num_keys);
-#else
- gboolean num_keys_matches = (device->num_keys == fakeout[i].num_keys);
-#endif
if (name_matches && source_matches && mode_matches
&& num_axes_matches && num_keys_matches)
@@ -683,11 +678,7 @@ static void createFakeList() {
fakeout[4].mode = gdk_device_get_mode (device);
fakeout[4].has_cursor = gdk_device_get_has_cursor (device);
fakeout[4].num_axes = gdk_device_get_n_axes (device);
-#if GTK_CHECK_VERSION (2, 24, 0)
fakeout[4].num_keys = gdk_device_get_n_keys (device);
-#else
- fakeout[4].num_keys = device->num_keys;
-#endif
} else {
fakeout[4].name = g_strdup("Core Pointer");
fakeout[4].source = GDK_SOURCE_MOUSE;
diff --git a/src/dialogs/dialog-events.cpp b/src/dialogs/dialog-events.cpp
index 49fcfd3a4..1fb823bf0 100644
--- a/src/dialogs/dialog-events.cpp
+++ b/src/dialogs/dialog-events.cpp
@@ -47,7 +47,7 @@ sp_dialog_defocus (GtkWindow *win)
{
GtkWindow *w;
//find out the document window we're transient for
- w = gtk_window_get_transient_for ((GtkWindow *) win);
+ w = gtk_window_get_transient_for(GTK_WINDOW(win));
//switch to it
if (w) {
@@ -65,10 +65,9 @@ void sp_dialog_defocus_callback_cpp(Gtk::Entry *e)
}
void
-sp_dialog_defocus_callback (GtkWindow */*win*/, gpointer data)
+sp_dialog_defocus_callback (GtkWindow * /*win*/, gpointer data)
{
- sp_dialog_defocus ((GtkWindow *)
- gtk_widget_get_toplevel ((GtkWidget *) data));
+ sp_dialog_defocus( GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(data))) );
}
@@ -93,7 +92,7 @@ sp_dialog_event_handler (GtkWindow *win, GdkEvent *event, gpointer data)
{
// if the focus is inside the Text and Font textview, do nothing
- GObject *dlg = (GObject *) data;
+ GObject *dlg = G_OBJECT(data);
if (g_object_get_data (dlg, "eatkeys")) {
return FALSE;
}
@@ -121,12 +120,12 @@ sp_dialog_event_handler (GtkWindow *win, GdkEvent *event, gpointer data)
* its position.
*/
GdkEventAny event;
- GtkWidget *widget = (GtkWidget *) win;
+ GtkWidget *widget = GTK_WIDGET(win);
event.type = GDK_DELETE;
event.window = gtk_widget_get_window (widget);
event.send_event = TRUE;
g_object_ref (G_OBJECT (event.window));
- gtk_main_do_event ((GdkEvent*)&event);
+ gtk_main_do_event(reinterpret_cast<GdkEvent*>(&event));
g_object_unref (G_OBJECT (event.window));
ret = TRUE;
@@ -218,7 +217,7 @@ void on_dialog_unhide (GtkWidget *w)
gboolean
sp_dialog_hide(GObject * /*object*/, gpointer data)
{
- GtkWidget *dlg = (GtkWidget *) data;
+ GtkWidget *dlg = GTK_WIDGET(data);
if (dlg)
gtk_widget_hide (dlg);
@@ -231,7 +230,7 @@ sp_dialog_hide(GObject * /*object*/, gpointer data)
gboolean
sp_dialog_unhide(GObject * /*object*/, gpointer data)
{
- GtkWidget *dlg = (GtkWidget *) data;
+ GtkWidget *dlg = GTK_WIDGET(data);
if (dlg)
gtk_widget_show (dlg);
diff --git a/src/dialogs/find.cpp b/src/dialogs/find.cpp
index 8acc96596..2810f065c 100644
--- a/src/dialogs/find.cpp
+++ b/src/dialogs/find.cpp
@@ -111,7 +111,7 @@ sp_find_squeeze_window()
#else
gtk_widget_size_request(dlg, &r);
#endif
- gtk_window_resize ((GtkWindow *) dlg, r.width, r.height);
+ gtk_window_resize (GTK_WINDOW(dlg), r.width, r.height);
}
static bool
@@ -156,7 +156,7 @@ item_text_match (SPItem *item, const gchar *text, bool exact)
//FIXME: strcasestr
ret = ((bool) (strstr(item_text, text) != NULL));
}
- g_free ((void*) item_text);
+ g_free(static_cast<void*>(g_strdup(item_text)));
return ret;
}
return false;
@@ -327,8 +327,8 @@ all_selection_items (Inkscape::Selection *s, GSList *l, SPObject *ancestor, bool
{
SPDesktop *desktop = SP_ACTIVE_DESKTOP;
- for (GSList *i = (GSList *) s->itemList(); i != NULL; i = i->next) {
- if ( SP_IS_ITEM(i->data) && !reinterpret_cast<SPObject*>(i->data)->cloned && !desktop->isLayer(SP_ITEM(i->data))) {
+ for (GSList *i = const_cast<GSList *>(s->itemList()); i != NULL; i = i->next) {
+ if ( SP_IS_ITEM(i->data) && !SP_OBJECT(i->data)->cloned && !desktop->isLayer(SP_ITEM(i->data))) {
SPItem * item = SP_ITEM(i->data);
if (!ancestor || ancestor->isAncestorOf(item)) {
if ((hidden || !desktop->itemIsHidden(item)) && (locked || !item->isLocked())) {
@@ -511,7 +511,7 @@ sp_find_types_checkbox (GtkWidget *w, const gchar *data, gboolean active,
{
GtkWidget *b = gtk_check_button_new_with_label (label);
gtk_widget_show (b);
- gtk_toggle_button_set_active ((GtkToggleButton *) b, active);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), active);
g_object_set_data (G_OBJECT (w), data, b);
gtk_widget_set_tooltip_text (b, tip);
if (toggled)
@@ -709,9 +709,9 @@ sp_find_dialog_old (void)
// if (y<0) y=0;
if (w && h)
- gtk_window_resize ((GtkWindow *) dlg, w, h);
+ gtk_window_resize(GTK_WINDOW(dlg), w, h);
if (x >= 0 && y >= 0 && (x < (gdk_screen_width()-MIN_ONSCREEN_DISTANCE)) && (y < (gdk_screen_height()-MIN_ONSCREEN_DISTANCE))) {
- gtk_window_move ((GtkWindow *) dlg, x, y);
+ gtk_window_move(GTK_WINDOW(dlg), x, y);
} else {
gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER);
}
@@ -764,7 +764,7 @@ sp_find_dialog_old (void)
{
GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Search in s_election"));
gtk_widget_show (b);
- gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), FALSE);
g_object_set_data (G_OBJECT (dlg), "inselection", b);
gtk_widget_set_tooltip_text (b, _("Limit search to the current selection"));
gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0);
@@ -773,7 +773,7 @@ sp_find_dialog_old (void)
{
GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Search in current _layer"));
gtk_widget_show (b);
- gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), FALSE);
g_object_set_data (G_OBJECT (dlg), "inlayer", b);
gtk_widget_set_tooltip_text (b, _("Limit search to the current layer"));
gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0);
@@ -782,7 +782,7 @@ sp_find_dialog_old (void)
{
GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Include _hidden"));
gtk_widget_show (b);
- gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), FALSE);
g_object_set_data (G_OBJECT (dlg), "includehidden", b);
gtk_widget_set_tooltip_text (b, _("Include hidden objects in search"));
gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0);
@@ -791,7 +791,7 @@ sp_find_dialog_old (void)
{
GtkWidget *b = gtk_check_button_new_with_mnemonic (_("Include l_ocked"));
gtk_widget_show (b);
- gtk_toggle_button_set_active ((GtkToggleButton *) b, FALSE);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b), FALSE);
g_object_set_data (G_OBJECT (dlg), "includelocked", b);
gtk_widget_set_tooltip_text (b, _("Include locked objects in search"));
gtk_box_pack_start (GTK_BOX (vb), b, FALSE, FALSE, 0);
@@ -814,8 +814,8 @@ sp_find_dialog_old (void)
}
}
- gtk_widget_show((GtkWidget *) dlg);
- gtk_window_present ((GtkWindow *) dlg);
+ gtk_widget_show(GTK_WIDGET(dlg));
+ gtk_window_present(GTK_WINDOW(dlg));
sp_find_dialog_reset (NULL, G_OBJECT (dlg));
return dlg;
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index 536c54609..eb51860ab 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -291,7 +291,7 @@ public:
#if GTK_CHECK_VERSION(3,0,0)
static gboolean handleDraw(GtkWidget *widget, cairo_t *cr);
#else
- static gint handleExpose(GtkWidget *widget, GdkEventExpose *event);
+ static gboolean handleExpose(GtkWidget *widget, GdkEventExpose *event);
#endif
/**
@@ -2178,23 +2178,24 @@ void SPCanvas::endForcedFullRedraws()
}
#if GTK_CHECK_VERSION(3,0,0)
-
-//TODO: This could probably be done much more efficiently
gboolean SPCanvasImpl::handleDraw(GtkWidget *widget, cairo_t *cr) {
SPCanvas *canvas = SP_CANVAS(widget);
- gint width = gtk_widget_get_allocated_width(widget);
- gint height = gtk_widget_get_allocated_height(widget);
- Geom::IntRect r = Geom::IntRect::from_xywh(
- canvas->x0, canvas->y0,
- width, height);
+ cairo_rectangle_list_t *rects = cairo_copy_clip_rectangle_list(cr);
+
+ for (int i = 0; i < rects->num_rectangles; i++) {
+ cairo_rectangle_t rectangle = rects->rectangles[i];
+
+ Geom::IntRect r = Geom::IntRect::from_xywh(rectangle.x + canvas->x0, rectangle.y + canvas->y0,
+ rectangle.width, rectangle.height);
- canvas->requestRedraw(r.left(), r.top(), r.right(), r.bottom());
+ canvas->requestRedraw(r.left(), r.top(), r.right(), r.bottom());
+ }
return FALSE;
}
#else
-gint SPCanvasImpl::handleExpose(GtkWidget *widget, GdkEventExpose *event)
+gboolean SPCanvasImpl::handleExpose(GtkWidget *widget, GdkEventExpose *event)
{
SPCanvas *canvas = SP_CANVAS(widget);
@@ -2203,43 +2204,23 @@ gint SPCanvasImpl::handleExpose(GtkWidget *widget, GdkEventExpose *event)
return FALSE;
}
-#if GTK_CHECK_VERSION(3,0,0)
- int n_rects = cairo_region_num_rectangles(event->region);
-#else
int n_rects = 0;
GdkRectangle *rects = NULL;
gdk_region_get_rectangles(event->region, &rects, &n_rects);
if(rects == NULL)
- return FALSE;
-#endif
-
- if (n_rects == 0)
- {
return FALSE;
- }
- else
- {
- for (int i = 0; i < n_rects; i++) {
-#if GTK_CHECK_VERSION(3,0,0)
- cairo_rectangle_int_t rectangle;
- cairo_region_get_rectangle(event->region, i, &rectangle);
-#else
- GdkRectangle rectangle = rects[i];
-#endif
-
- Geom::IntRect r = Geom::IntRect::from_xywh(
- rectangle.x + canvas->x0, rectangle.y + canvas->y0,
- rectangle.width, rectangle.height);
+
+ for (int i = 0; i < n_rects; i++) {
+ GdkRectangle rectangle = rects[i];
+
+ Geom::IntRect r = Geom::IntRect::from_xywh(rectangle.x + canvas->x0, rectangle.y + canvas->y0,
+ rectangle.width, rectangle.height);
- canvas->requestRedraw(r.left(), r.top(), r.right(), r.bottom());
- }
-
-#if !GTK_CHECK_VERSION(3,0,0)
- g_free (rects);
-#endif
- return FALSE;
+ canvas->requestRedraw(r.left(), r.top(), r.right(), r.bottom());
}
+
+ return FALSE;
}
#endif
diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp
index 8b293a9d9..38b981444 100644
--- a/src/dropper-context.cpp
+++ b/src/dropper-context.cpp
@@ -84,9 +84,9 @@ GType sp_dropper_context_get_type()
static void sp_dropper_context_class_init(SPDropperContextClass *klass)
{
- SPEventContextClass *ec_class = (SPEventContextClass *) klass;
+ SPEventContextClass *ec_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
ec_class->setup = sp_dropper_context_setup;
ec_class->finish = sp_dropper_context_finish;
@@ -109,8 +109,8 @@ static void sp_dropper_context_setup(SPEventContext *ec)
{
SPDropperContext *dc = SP_DROPPER_CONTEXT(ec);
- if (((SPEventContextClass *) parent_class)->setup) {
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
}
/* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */
@@ -206,7 +206,7 @@ guint32 sp_dropper_context_get_color(SPEventContext *ec)
static gint sp_dropper_context_root_handler(SPEventContext *event_context, GdkEvent *event)
{
- SPDropperContext *dc = (SPDropperContext *) event_context;
+ SPDropperContext *dc = SP_DROPPER_CONTEXT(event_context);
int ret = FALSE;
SPDesktop *desktop = event_context->desktop;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -423,8 +423,8 @@ static gint sp_dropper_context_root_handler(SPEventContext *event_context, GdkEv
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->root_handler) {
- ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) {
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event);
}
}
diff --git a/src/dyna-draw-context.cpp b/src/dyna-draw-context.cpp
index 3f488eca4..b30950f5a 100644
--- a/src/dyna-draw-context.cpp
+++ b/src/dyna-draw-context.cpp
@@ -128,10 +128,10 @@ GType sp_dyna_draw_context_get_type(void)
static void
sp_dyna_draw_context_class_init(SPDynaDrawContextClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- dd_parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ dd_parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_dyna_draw_context_dispose;
@@ -195,8 +195,8 @@ sp_dyna_draw_context_setup(SPEventContext *ec)
{
SPDynaDrawContext *ddc = SP_DYNA_DRAW_CONTEXT(ec);
- if (((SPEventContextClass *) dd_parent_class)->setup)
- ((SPEventContextClass *) dd_parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(dd_parent_class))->setup)
+ (SP_EVENT_CONTEXT_CLASS(dd_parent_class))->setup(ec);
ddc->accumulated = new SPCurve();
ddc->currentcurve = new SPCurve();
@@ -974,8 +974,8 @@ sp_dyna_draw_context_root_handler(SPEventContext *event_context,
}
if (!ret) {
- if (((SPEventContextClass *) dd_parent_class)->root_handler) {
- ret = ((SPEventContextClass *) dd_parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(dd_parent_class))->root_handler) {
+ ret = (SP_EVENT_CONTEXT_CLASS(dd_parent_class))->root_handler(event_context, event);
}
}
diff --git a/src/ege-select-one-action.cpp b/src/ege-select-one-action.cpp
index a0c91d09e..a5d92e809 100644
--- a/src/ege-select-one-action.cpp
+++ b/src/ege-select-one-action.cpp
@@ -785,15 +785,8 @@ GtkWidget* create_tool_item( GtkAction* action )
GtkWidget *normal;
if (act->private_data->selectionMode == SELECTION_OPEN) {
-
-// Backward-compatibility: GtkComboBoxEntry is deprecated in GTK+ >= 2.24
-// and gtk_combo_box_set_entry_text_column is unavailable in earlier versions.
-#if GTK_CHECK_VERSION (2, 24, 0)
normal = gtk_combo_box_new_with_model_and_entry (act->private_data->model);
gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (normal), act->private_data->labelColumn);
-#else
- normal = gtk_combo_box_entry_new_with_model (act->private_data->model, act->private_data->labelColumn);
-#endif
GtkWidget *child = gtk_bin_get_child( GTK_BIN(normal) );
if (GTK_IS_ENTRY(child)) {
@@ -897,13 +890,7 @@ void resync_active( EgeSelectOneAction* act, gint active, gboolean override )
}
if ( GTK_IS_COMBO_BOX(combodata) ) {
GtkComboBox* combo = GTK_COMBO_BOX(combodata);
-// Backward-compatibility: GtkComboBoxEntry is deprecated in GTK+ >= 2.24
-// gtk_combo_box_get_has_entry is unavailable in earlier versions
-#if GTK_CHECK_VERSION (2, 24, 0)
if ((active == -1) && (gtk_combo_box_get_has_entry(combo))) {
-#else
- if ((active == -1) && (GTK_IS_COMBO_BOX_ENTRY(combo))) {
-#endif
gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN(combo))), act->private_data->activeText);
} else if ( gtk_combo_box_get_active(combo) != active ) {
gtk_combo_box_set_active( combo, active );
@@ -1019,10 +1006,6 @@ void combo_changed_cb( GtkComboBox* widget, gpointer user_data )
GtkComboBox *cb = GTK_COMBO_BOX (widget);
gint newActive = gtk_combo_box_get_active(widget);
-// Backward-compatibility: gtk_combo_box_get_active_text is deprecated in
-// GTK+ >= 2.24. gtk_combo_box_get_has_entry is unavailable in earlier
-// versions.
-#if GTK_CHECK_VERSION (2, 24, 0)
if (gtk_combo_box_get_has_entry (cb)) {
GtkBin *bin = GTK_BIN (cb);
GtkEntry *entry = GTK_ENTRY (gtk_bin_get_child (bin));
@@ -1038,9 +1021,6 @@ void combo_changed_cb( GtkComboBox* widget, gpointer user_data )
gtk_tree_model_get (model, &iter, 0, &text, -1);
}
}
-#else
- text = gtk_combo_box_get_active_text (cb);
-#endif
if (!text) {
/* User probably deleted the data in the model */
diff --git a/src/eraser-context.cpp b/src/eraser-context.cpp
index 76ea5c252..c4560d462 100644
--- a/src/eraser-context.cpp
+++ b/src/eraser-context.cpp
@@ -131,10 +131,10 @@ GType sp_eraser_context_get_type(void)
static void
sp_eraser_context_class_init(SPEraserContextClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- eraser_parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ eraser_parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_eraser_context_dispose;
@@ -165,8 +165,8 @@ sp_eraser_context_setup(SPEventContext *ec)
SPEraserContext *erc = SP_ERASER_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
- if (((SPEventContextClass *) eraser_parent_class)->setup)
- ((SPEventContextClass *) eraser_parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(eraser_parent_class))->setup)
+ (SP_EVENT_CONTEXT_CLASS(eraser_parent_class))->setup(ec);
erc->accumulated = new SPCurve();
erc->currentcurve = new SPCurve();
@@ -689,8 +689,8 @@ sp_eraser_context_root_handler(SPEventContext *event_context,
}
if (!ret) {
- if (((SPEventContextClass *) eraser_parent_class)->root_handler) {
- ret = ((SPEventContextClass *) eraser_parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(eraser_parent_class))->root_handler) {
+ ret = (SP_EVENT_CONTEXT_CLASS(eraser_parent_class))->root_handler(event_context, event);
}
}
diff --git a/src/event-context.cpp b/src/event-context.cpp
index 3c1609d97..71d4a5fb9 100644
--- a/src/event-context.cpp
+++ b/src/event-context.cpp
@@ -106,11 +106,9 @@ GType sp_event_context_get_type(void) {
* Callback to set up the SPEventContext vtable.
*/
static void sp_event_context_class_init(SPEventContextClass *klass) {
- GObjectClass *object_class;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
- object_class = (GObjectClass *) klass;
-
- parent_class = (GObjectClass*) g_type_class_peek_parent(klass);
+ parent_class = G_OBJECT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_event_context_dispose;
@@ -1403,17 +1401,16 @@ gboolean sp_event_context_snap_watchdog_callback(gpointer data) {
sp_event_context_virtual_root_handler(ec, dse->getEvent());
break;
case DelayedSnapEvent::EVENTCONTEXT_ITEM_HANDLER: {
- SPItem* item = NULL;
- item = SP_ITEM(dse->getItem());
+ gpointer item = dse->getItem();
if (item && SP_IS_ITEM(item)) {
- sp_event_context_virtual_item_handler(ec, item, dse->getEvent());
+ sp_event_context_virtual_item_handler(ec, SP_ITEM(item), dse->getEvent());
}
}
break;
case DelayedSnapEvent::KNOT_HANDLER: {
- SPKnot* knot = SP_KNOT(dse->getItem2());
+ gpointer knot = dse->getItem2();
if (knot && SP_IS_KNOT(knot)) {
- sp_knot_handler_request_position(dse->getEvent(), knot);
+ sp_knot_handler_request_position(dse->getEvent(), SP_KNOT(knot));
}
}
break;
diff --git a/src/extension/internal/image-resolution.cpp b/src/extension/internal/image-resolution.cpp
index 53fcc0fbf..a17a2bb30 100644
--- a/src/extension/internal/image-resolution.cpp
+++ b/src/extension/internal/image-resolution.cpp
@@ -27,27 +27,30 @@ namespace Extension {
namespace Internal {
ImageResolution::ImageResolution(char const *fn) {
- ok_ = false;
-
- readpng(fn);
- if (!ok_)
- readexif(fn);
- if (!ok_)
- readexiv(fn);
- if (!ok_)
- readjfif(fn);
+ ok_ = false;
+
+ readpng(fn);
+ if (!ok_) {
+ readexiv(fn);
+ }
+ if (!ok_) {
+ readjfif(fn);
+ }
+ if (!ok_) {
+ readexif(fn);
+ }
}
bool ImageResolution::ok() const {
- return ok_;
+ return ok_;
}
double ImageResolution::x() const {
- return x_;
+ return x_;
}
double ImageResolution::y() const {
- return y_;
+ return y_;
}
@@ -57,60 +60,62 @@ double ImageResolution::y() const {
#include <png.h>
static bool haspngheader(FILE *fp) {
- unsigned char header[8];
- if (fread(header, 1, 8, fp)!=8)
- return false;
+ unsigned char header[8];
+ if ( fread(header, 1, 8, fp) != 8 ) {
+ return false;
+ }
- fseek(fp, 0, SEEK_SET);
-
- if (png_sig_cmp(header, 0, 8))
- return false;
+ fseek(fp, 0, SEEK_SET);
+
+ if (png_sig_cmp(header, 0, 8)) {
+ return false;
+ }
- return true;
+ return true;
}
// Implementation using libpng
void ImageResolution::readpng(char const *fn) {
- FILE *fp = fopen(fn, "rb");
- if (!fp)
- return;
+ FILE *fp = fopen(fn, "rb");
+ if (!fp)
+ return;
- if (!haspngheader(fp)) {
- fclose(fp);
- return;
- }
+ if (!haspngheader(fp)) {
+ fclose(fp);
+ return;
+ }
- png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
- if (!png_ptr)
- return;
-
- png_infop info_ptr = png_create_info_struct(png_ptr);
- if (!png_ptr) {
- png_destroy_read_struct(&png_ptr, 0, 0);
- return;
- }
-
- if (setjmp(png_jmpbuf(png_ptr))) {
- png_destroy_read_struct(&png_ptr, &info_ptr, 0);
- fclose(fp);
- return;
- }
+ png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
+ if (!png_ptr)
+ return;
+
+ png_infop info_ptr = png_create_info_struct(png_ptr);
+ if (!info_ptr) {
+ png_destroy_read_struct(&png_ptr, 0, 0);
+ return;
+ }
+
+ if (setjmp(png_jmpbuf(png_ptr))) {
+ png_destroy_read_struct(&png_ptr, &info_ptr, 0);
+ fclose(fp);
+ return;
+ }
- png_init_io(png_ptr, fp);
- png_read_info(png_ptr, info_ptr);
+ png_init_io(png_ptr, fp);
+ png_read_info(png_ptr, info_ptr);
- png_uint_32 res_x, res_y;
- int unit_type;
- png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y, &unit_type);
+ png_uint_32 res_x, res_y;
+ int unit_type;
+ png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y, &unit_type);
- png_destroy_read_struct(&png_ptr, &info_ptr, 0);
- fclose(fp);
+ png_destroy_read_struct(&png_ptr, &info_ptr, 0);
+ fclose(fp);
- if (unit_type == PNG_RESOLUTION_METER) {
- ok_ = true;
- x_ = res_x * 2.54/100;
- y_ = res_y * 2.54/100;
- }
+ if (unit_type == PNG_RESOLUTION_METER) {
+ ok_ = true;
+ x_ = res_x * 2.54 / 100;
+ y_ = res_y * 2.54 / 100;
+ }
}
#else
@@ -126,63 +131,71 @@ void ImageResolution::readpng(char const *) {
#include <libexif/exif-data.h>
static double exifDouble(ExifEntry *entry, ExifByteOrder byte_order) {
- switch (entry->format) {
- case EXIF_FORMAT_BYTE:
- return double(entry->data[0]);
- case EXIF_FORMAT_SHORT:
- return double(exif_get_short(entry->data, byte_order));
- case EXIF_FORMAT_LONG:
- return double(exif_get_long(entry->data, byte_order));
- case EXIF_FORMAT_RATIONAL: {
- ExifRational r = exif_get_rational(entry->data, byte_order);
- return double(r.numerator)/double(r.denominator);
- }
- case EXIF_FORMAT_SBYTE:
- return double(*(signed char *)entry->data);
- case EXIF_FORMAT_SSHORT:
- return double(exif_get_sshort(entry->data, byte_order));
- case EXIF_FORMAT_SLONG:
- return double(exif_get_slong(entry->data, byte_order));
- case EXIF_FORMAT_SRATIONAL: {
- ExifSRational r = exif_get_srational(entry->data, byte_order);
- return double(r.numerator)/double(r.denominator);
- }
- case EXIF_FORMAT_FLOAT:
- return double(((float *)entry->data)[0]);
- case EXIF_FORMAT_DOUBLE:
- return ((double *)entry->data)[0];
- default:
- return nan(0);
- }
+ switch (entry->format) {
+ case EXIF_FORMAT_BYTE: {
+ return double(entry->data[0]);
+ }
+ case EXIF_FORMAT_SHORT: {
+ return double(exif_get_short(entry->data, byte_order));
+ }
+ case EXIF_FORMAT_LONG: {
+ return double(exif_get_long(entry->data, byte_order));
+ }
+ case EXIF_FORMAT_RATIONAL: {
+ ExifRational r = exif_get_rational(entry->data, byte_order);
+ return double(r.numerator) / double(r.denominator);
+ }
+ case EXIF_FORMAT_SBYTE: {
+ return double(*(signed char *)entry->data);
+ }
+ case EXIF_FORMAT_SSHORT: {
+ return double(exif_get_sshort(entry->data, byte_order));
+ }
+ case EXIF_FORMAT_SLONG: {
+ return double(exif_get_slong(entry->data, byte_order));
+ }
+ case EXIF_FORMAT_SRATIONAL: {
+ ExifSRational r = exif_get_srational(entry->data, byte_order);
+ return double(r.numerator) / double(r.denominator);
+ }
+ case EXIF_FORMAT_FLOAT: {
+ return double(((float *)entry->data)[0]);
+ }
+ case EXIF_FORMAT_DOUBLE: {
+ return ((double *)entry->data)[0];
+ }
+ default: {
+ return nan(0);
+ }
+ }
}
// Implementation using libexif
void ImageResolution::readexif(char const *fn) {
- ExifData *ed;
- ed = exif_data_new_from_file(fn);
- if (!ed)
- return;
- ExifByteOrder byte_order = exif_data_get_byte_order(ed);
-
- ExifEntry *xres = exif_content_get_entry(ed->ifd[EXIF_IFD_0],
- EXIF_TAG_X_RESOLUTION);
- ExifEntry *yres = exif_content_get_entry(ed->ifd[EXIF_IFD_0],
- EXIF_TAG_Y_RESOLUTION);
- ExifEntry *unit = exif_content_get_entry(ed->ifd[EXIF_IFD_0],
- EXIF_TAG_RESOLUTION_UNIT);
- if (xres && yres) {
- x_ = exifDouble(xres, byte_order);
- y_ = exifDouble(yres, byte_order);
- if (unit) {
- double u = exifDouble(unit, byte_order);
- if (u==3) {
- x_ *= 2.54;
- y_ *= 2.54;
- }
+ ExifData *ed;
+ ed = exif_data_new_from_file(fn);
+ if (!ed)
+ return;
+
+ ExifByteOrder byte_order = exif_data_get_byte_order(ed);
+
+ ExifEntry *xres = exif_content_get_entry(ed->ifd[EXIF_IFD_0], EXIF_TAG_X_RESOLUTION);
+ ExifEntry *yres = exif_content_get_entry(ed->ifd[EXIF_IFD_0], EXIF_TAG_Y_RESOLUTION);
+ ExifEntry *unit = exif_content_get_entry(ed->ifd[EXIF_IFD_0], EXIF_TAG_RESOLUTION_UNIT);
+
+ if ( xres && yres ) {
+ x_ = exifDouble(xres, byte_order);
+ y_ = exifDouble(yres, byte_order);
+ if (unit) {
+ double u = exifDouble(unit, byte_order);
+ if ( u == 3 ) {
+ x_ *= 2.54;
+ y_ *= 2.54;
+ }
+ }
+ ok_ = true;
}
- ok_ = true;
- }
- exif_data_free(ed);
+ exif_data_free(ed);
}
#else
@@ -196,43 +209,43 @@ void ImageResolution::readexif(char const *) {
#if IR_TRY_EXIV
void ImageResolution::readexiv(char const *fn) {
- Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(fn);
- if (!image.get())
- return;
-
- image->readMetadata();
- Exiv2::ExifData &exifData = image->exifData();
- if (exifData.empty())
- return;
-
- Exiv2::ExifData::const_iterator end = exifData.end();
- bool havex = false;
- bool havey = false;
- bool haveunit = false;
- int unit;
- for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
- if (ok_)
- break;
- if (i->tag()==0x011a) {
- // X Resolution
- x_ = i->toFloat();
- havex = true;
- } else if (i->tag()==0x011b) {
- // Y Resolution
- y_ = i->toFloat();
- havey = true;
- } else if (i->tag()==0x0128) {
- unit = i->toLong();
+ Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(fn);
+ if (!image.get())
+ return;
+
+ image->readMetadata();
+ Exiv2::ExifData &exifData = image->exifData();
+ if (exifData.empty())
+ return;
+
+ Exiv2::ExifData::const_iterator end = exifData.end();
+ bool havex = false;
+ bool havey = false;
+ bool haveunit = false;
+ int unit;
+ for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) {
+ if (ok_)
+ break;
+ if ( i->tag() == 0x011a ) {
+ // X Resolution
+ x_ = i->toFloat();
+ havex = true;
+ } else if ( i->tag() == 0x011b ) {
+ // Y Resolution
+ y_ = i->toFloat();
+ havey = true;
+ } else if ( i->tag() == 0x0128 ) {
+ unit = i->toLong();
+ }
+ ok_ = havex && havey && haveunit;
}
- ok_ = havex && havey && haveunit;
- }
- if (haveunit) {
- if (unit==3) {
- x_ *= 2.54;
- y_ *= 2.54;
+ if (haveunit) {
+ if ( unit == 3 ) {
+ x_ *= 2.54;
+ y_ *= 2.54;
+ }
}
- }
- ok_ = havex && havey;
+ ok_ = havex && havey;
}
#else
@@ -249,7 +262,7 @@ void ImageResolution::readexiv(char const *) {
#include <setjmp.h>
static void irjfif_error_exit(j_common_ptr cinfo) {
- longjmp(*(jmp_buf*)cinfo->client_data, 1);
+ longjmp(*(jmp_buf*)cinfo->client_data, 1);
}
static void irjfif_emit_message(j_common_ptr, int) {
@@ -265,44 +278,52 @@ static void irjfif_reset(j_common_ptr) {
}
void ImageResolution::readjfif(char const *fn) {
- FILE *ifd = fopen(fn, "rb");
- if (!ifd)
- return;
-
- struct jpeg_decompress_struct cinfo;
- jmp_buf jbuf;
- struct jpeg_error_mgr jerr;
- bool constr = false;
+ FILE *ifd = fopen(fn, "rb");
+ if (!ifd) {
+ return;
+ }
- if (setjmp(jbuf)) {
+ struct jpeg_decompress_struct cinfo;
+ jmp_buf jbuf;
+ struct jpeg_error_mgr jerr;
+ bool constr = false;
+
+ if (setjmp(jbuf)) {
+ fclose(ifd);
+ if (constr) {
+ jpeg_destroy_decompress(&cinfo);
+ }
+ return;
+ }
+
+ cinfo.err = jpeg_std_error(&jerr);
+ jpeg_create_decompress(&cinfo);
+ jerr.error_exit = &irjfif_error_exit;
+ jerr.emit_message = &irjfif_emit_message;
+ jerr.output_message = &irjfif_output_message;
+ jerr.format_message = &irjfif_format_message;
+ jerr.reset_error_mgr = &irjfif_reset;
+ cinfo.client_data = (void*)&jbuf;
+
+ constr = true;
+
+ jpeg_stdio_src(&cinfo, ifd);
+ jpeg_read_header(&cinfo, TRUE);
+
+ if (cinfo.saw_JFIF_marker) { // JFIF APP0 marker was seen
+ if ( cinfo.density_unit == 1 ) { // dots/inch
+ x_ = cinfo.X_density;
+ y_ = cinfo.Y_density;
+ ok_ = true;
+ } else if ( cinfo.density_unit == 2 ) { // dots/cm
+ x_ = cinfo.X_density * 2.54;
+ y_ = cinfo.Y_density * 2.54;
+ ok_ = true;
+ }
+ }
+ constr = false;
+ jpeg_destroy_decompress(&cinfo);
fclose(ifd);
- if (constr)
- jpeg_destroy_decompress(&cinfo);
- return;
- }
-
- cinfo.err = jpeg_std_error(&jerr);
- jpeg_create_decompress(&cinfo);
- jerr.error_exit = &irjfif_error_exit;
- jerr.emit_message = &irjfif_emit_message;
- jerr.output_message = &irjfif_output_message;
- jerr.format_message = &irjfif_format_message;
- jerr.reset_error_mgr = &irjfif_reset;
- cinfo.client_data = (void*)&jbuf;
- constr = true;
-
- jpeg_stdio_src(&cinfo, ifd);
- jpeg_read_header(&cinfo, TRUE);
-
- if (cinfo.density_unit==1) {
- x_ = cinfo.X_density;
- y_ = cinfo.Y_density;
- ok_ = true;
- }
-
- constr = false;
- jpeg_destroy_decompress(&cinfo);
- fclose(ifd);
}
#else
@@ -312,7 +333,7 @@ void ImageResolution::readjfif(char const *) {
}
#endif
-
+
}
}
}
diff --git a/src/extension/internal/pdf-input-cairo.cpp b/src/extension/internal/pdf-input-cairo.cpp
index 03b7c0a90..0a9dd8399 100644
--- a/src/extension/internal/pdf-input-cairo.cpp
+++ b/src/extension/internal/pdf-input-cairo.cpp
@@ -229,7 +229,7 @@ PdfImportCairoDialog::PdfImportCairoDialog(PopplerDocument *doc)
this->get_vbox()->pack_start(*hbox1);
this->set_title(_("PDF Import Settings"));
this->set_modal(true);
- sp_transientize((GtkWidget *)this->gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(this->gobj())); //Make transient
this->property_window_position().set_value(Gtk::WIN_POS_NONE);
this->set_resizable(true);
this->property_destroy_with_parent().set_value(false);
@@ -416,7 +416,7 @@ static void copy_cairo_surface_to_pixbuf (cairo_surface_t *surface,
cairo_height = gdk_pixbuf_get_height (pixbuf);
for (y = 0; y < cairo_height; y++)
{
- src = (unsigned int *) (cairo_data + y * cairo_rowstride);
+ src = reinterpret_cast<unsigned int *>(cairo_data + y * cairo_rowstride);
dst = pixbuf_data + y * pixbuf_rowstride;
for (x = 0; x < cairo_width; x++)
{
@@ -622,8 +622,8 @@ PdfInputCairo::open(Inkscape::Extension::Input * /*mod*/, const gchar * uri) {
static cairo_status_t
_write_ustring_cb(void *closure, const unsigned char *data, unsigned int length)
{
- Glib::ustring* stream = (Glib::ustring*)closure;
- stream->append((const char*)data, length);
+ Glib::ustring* stream = static_cast<Glib::ustring*>(closure);
+ stream->append(reinterpret_cast<const char*>(data), length);
return CAIRO_STATUS_SUCCESS;
}
diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp
index 688e3f612..90d53c6b0 100644
--- a/src/extension/internal/pdfinput/pdf-input.cpp
+++ b/src/extension/internal/pdfinput/pdf-input.cpp
@@ -245,7 +245,7 @@ PdfImportDialog::PdfImportDialog(PDFDoc *doc, const gchar */*uri*/)
this->get_vbox()->pack_start(*hbox1);
this->set_title(_("PDF Import Settings"));
this->set_modal(true);
- sp_transientize((GtkWidget *)this->gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(this->gobj())); //Make transient
this->property_window_position().set_value(Gtk::WIN_POS_NONE);
this->set_resizable(true);
this->property_destroy_with_parent().set_value(false);
@@ -446,7 +446,7 @@ static void copy_cairo_surface_to_pixbuf (cairo_surface_t *surface,
cairo_height = gdk_pixbuf_get_height (pixbuf);
for (y = 0; y < cairo_height; y++)
{
- src = (unsigned int *) (cairo_data + y * cairo_rowstride);
+ src = reinterpret_cast<unsigned int *>(cairo_data + y * cairo_rowstride);
dst = pixbuf_data + y * pixbuf_rowstride;
for (x = 0; x < cairo_width; x++)
{
@@ -603,7 +603,7 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) {
PDFDoc *pdf_doc = new PDFDoc(filename_goo, NULL, NULL, NULL); // TODO: Could ask for password
//delete filename_goo;
#else
- wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (uri, -1, NULL, NULL, NULL);
+ wchar_t *wfilename = reinterpret_cast<wchar_t*>(g_utf8_to_utf16 (uri, -1, NULL, NULL, NULL));
if (wfilename == NULL) {
return NULL;
diff --git a/src/extension/internal/vsd-input.cpp b/src/extension/internal/vsd-input.cpp
index 54b570258..187318417 100644
--- a/src/extension/internal/vsd-input.cpp
+++ b/src/extension/internal/vsd-input.cpp
@@ -142,7 +142,7 @@ VsdImportDialog::VsdImportDialog(const std::vector<WPXString> &vec)
this->get_vbox()->pack_start(*vbox2);
this->set_title(_("Page Selector"));
this->set_modal(true);
- sp_transientize((GtkWidget *)this->gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(this->gobj())); //Make transient
this->property_window_position().set_value(Gtk::WIN_POS_NONE);
this->set_resizable(true);
this->property_destroy_with_parent().set_value(false);
diff --git a/src/helper/unit-menu.cpp b/src/helper/unit-menu.cpp
index 964ca9d67..bb2254a1b 100644
--- a/src/helper/unit-menu.cpp
+++ b/src/helper/unit-menu.cpp
@@ -84,7 +84,7 @@ static void
sp_unit_selector_class_init(SPUnitSelectorClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
- unit_selector_parent_class = (GtkHBoxClass*)g_type_class_peek_parent(klass);
+ unit_selector_parent_class = GTK_HBOX_CLASS(g_type_class_peek_parent(klass));
signals[SET_UNIT] = g_signal_new("set_unit",
G_TYPE_FROM_CLASS(klass),
@@ -148,17 +148,17 @@ sp_unit_selector_finalize(GObject *object)
GtkWidget *
sp_unit_selector_new(guint bases)
{
- SPUnitSelector *us = (SPUnitSelector*)g_object_new(SP_TYPE_UNIT_SELECTOR, NULL);
+ SPUnitSelector *us = SP_UNIT_SELECTOR(g_object_new(SP_TYPE_UNIT_SELECTOR, NULL));
sp_unit_selector_set_bases(us, bases);
- return (GtkWidget *) us;
+ return GTK_WIDGET(us);
}
void
sp_unit_selector_setsize(GtkWidget *us, guint w, guint h)
{
- gtk_widget_set_size_request(((SPUnitSelector *) us)->combo_box, w, h);
+ gtk_widget_set_size_request((SP_UNIT_SELECTOR(us))->combo_box, w, h);
}
SPUnit const *
@@ -180,7 +180,7 @@ on_combo_box_changed (GtkComboBox *widget, SPUnitSelector *us)
}
SPUnit const *unit = NULL;
- gtk_tree_model_get ((GtkTreeModel *)us->store, &iter, COMBO_COL_UNIT, &unit, -1);
+ gtk_tree_model_get (GTK_TREE_MODEL(us->store), &iter, COMBO_COL_UNIT, &unit, -1);
g_return_if_fail(unit != NULL);
@@ -242,7 +242,7 @@ spus_rebuild_menu(SPUnitSelector *us)
gint pos = 0;
gint p = 0;
for (GSList *l = us->units; l != NULL; l = l->next) {
- SPUnit const *u = (SPUnit*)l->data;
+ SPUnit const *u = static_cast<SPUnit const*>(l->data);
// use only abbreviations in the menu
// i = gtk_menu_item_new_with_label((us->abbr) ? (us->plural) ? u->abbr_plural : u->abbr : (us->plural) ? u->plural : u->name);
@@ -272,7 +272,7 @@ sp_unit_selector_set_bases(SPUnitSelector *us, guint bases)
g_return_if_fail(units != NULL);
sp_unit_free_list(us->units);
us->units = units;
- us->unit = (SPUnit*)units->data;
+ us->unit = static_cast<SPUnit *>(units->data);
spus_rebuild_menu(us);
}
diff --git a/src/ink-comboboxentry-action.cpp b/src/ink-comboboxentry-action.cpp
index 14f8f83a6..8033d1fab 100644
--- a/src/ink-comboboxentry-action.cpp
+++ b/src/ink-comboboxentry-action.cpp
@@ -361,16 +361,8 @@ GtkWidget* create_tool_item( GtkAction* action )
item = GTK_WIDGET( gtk_tool_item_new() );
- GtkWidget* comboBoxEntry;
-
-// Backward-compatibility: GtkComboBoxEntry is deprecated in GTK+ >= 2.24
-// gtk_combo_box_set_entry_text_column is unavailable in earlier versions
-#if GTK_CHECK_VERSION (2, 24, 0)
- comboBoxEntry = gtk_combo_box_new_with_model_and_entry (ink_comboboxentry_action->model);
+ GtkWidget* comboBoxEntry = gtk_combo_box_new_with_model_and_entry (ink_comboboxentry_action->model);
gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (comboBoxEntry), 0);
-#else
- comboBoxEntry = gtk_combo_box_entry_new_with_model( ink_comboboxentry_action->model, 0 );
-#endif
// Name it so we can muck with it using an RC file
gtk_widget_set_name( comboBoxEntry, combobox_name );
diff --git a/src/select-context.cpp b/src/select-context.cpp
index bc096d528..5934d615c 100644
--- a/src/select-context.cpp
+++ b/src/select-context.cpp
@@ -97,10 +97,10 @@ sp_select_context_get_type(void)
static void
sp_select_context_class_init(SPSelectContextClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_select_context_dispose;
@@ -188,8 +188,8 @@ sp_select_context_setup(SPEventContext *ec)
{
SPSelectContext *select_context = SP_SELECT_CONTEXT(ec);
- if (((SPEventContextClass *) parent_class)->setup) {
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
}
SPDesktop *desktop = ec->desktop;
@@ -432,8 +432,8 @@ sp_select_context_item_handler(SPEventContext *event_context, SPItem *item, GdkE
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->item_handler)
- ret = ((SPEventContextClass *) parent_class)->item_handler(event_context, item, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler)
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler(event_context, item, event);
}
return ret;
@@ -1150,8 +1150,8 @@ sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event)
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->root_handler)
- ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler)
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event);
}
return ret;
diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp
index d74eaa6fb..6fe3a599b 100644
--- a/src/sp-ellipse.cpp
+++ b/src/sp-ellipse.cpp
@@ -369,6 +369,7 @@ static Inkscape::XML::Node *sp_genericellipse_write(SPObject *object, Inkscape::
sp_arc_set_elliptical_path_attribute(SP_ARC(object), object->getRepr());
}
}
+ sp_genericellipse_set_shape ((SPShape *) ellipse); // evaluate SPCurve
if (((SPObjectClass *) ge_parent_class)->write) {
((SPObjectClass *) ge_parent_class)->write(object, xml_doc, repr, flags);
diff --git a/src/sp-item.cpp b/src/sp-item.cpp
index 363aa8c17..a8e525bd5 100644
--- a/src/sp-item.cpp
+++ b/src/sp-item.cpp
@@ -552,6 +552,7 @@ void SPItem::sp_item_set(SPObject *object, unsigned key, gchar const *value)
void SPItem::clip_ref_changed(SPObject *old_clip, SPObject *clip, SPItem *item)
{
+ item->bbox_valid = FALSE; // force a re-evaluation
if (old_clip) {
SPItemView *v;
/* Hide clippath */
diff --git a/src/sp-rect.cpp b/src/sp-rect.cpp
index 22a403345..f33d234ee 100644
--- a/src/sp-rect.cpp
+++ b/src/sp-rect.cpp
@@ -207,6 +207,8 @@ sp_rect_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML:
sp_repr_set_svg_double(repr, "x", rect->x.computed);
sp_repr_set_svg_double(repr, "y", rect->y.computed);
+ sp_rect_set_shape ((SPShape *) rect); // evaluate SPCurve
+
if (((SPObjectClass *) parent_class)->write)
((SPObjectClass *) parent_class)->write(object, xml_doc, repr, flags);
diff --git a/src/spiral-context.cpp b/src/spiral-context.cpp
index 052c9e853..404b0ec1c 100644
--- a/src/spiral-context.cpp
+++ b/src/spiral-context.cpp
@@ -84,10 +84,10 @@ sp_spiral_context_get_type()
static void
sp_spiral_context_class_init(SPSpiralContextClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_spiral_context_dispose;
@@ -123,15 +123,15 @@ sp_spiral_context_init(SPSpiralContext *spiral_context)
static void sp_spiral_context_finish(SPEventContext *ec)
{
SPSpiralContext *sc = SP_SPIRAL_CONTEXT(ec);
- SPDesktop *desktop = ec->desktop;
+ SPDesktop *desktop = ec->desktop;
- sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME);
- sp_spiral_finish(sc);
+ sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME);
+ sp_spiral_finish(sc);
sc->sel_changed_connection.disconnect();
- if (((SPEventContextClass *) parent_class)->finish) {
- ((SPEventContextClass *) parent_class)->finish(ec);
- }
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->finish) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->finish(ec);
+ }
}
static void
@@ -177,8 +177,8 @@ sp_spiral_context_setup(SPEventContext *ec)
{
SPSpiralContext *sc = SP_SPIRAL_CONTEXT(ec);
- if (((SPEventContextClass *) parent_class)->setup)
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup)
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
sp_event_context_read(ec, "expansion");
sp_event_context_read(ec, "revolution");
@@ -398,8 +398,8 @@ sp_spiral_context_root_handler(SPEventContext *event_context, GdkEvent *event)
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->root_handler)
- ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler)
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event);
}
return ret;
@@ -426,7 +426,7 @@ static void sp_spiral_drag(SPSpiralContext *sc, Geom::Point const &p, guint stat
// Set style
sp_desktop_apply_style_tool(desktop, repr, "/tools/shapes/spiral", false);
- sc->item = (SPItem *) desktop->currentLayer()->appendChildRepr(repr);
+ sc->item = SP_ITEM(desktop->currentLayer()->appendChildRepr(repr));
Inkscape::GC::release(repr);
sc->item->transform = SP_ITEM(desktop->currentLayer())->i2doc_affine().inverse();
sc->item->updateRepr();
diff --git a/src/splivarot.cpp b/src/splivarot.cpp
index f1360adda..f04d92616 100644
--- a/src/splivarot.cpp
+++ b/src/splivarot.cpp
@@ -716,8 +716,8 @@ Geom::PathVector* item_outline(SPItem const *item, bool bbox_only)
ButtType o_butt;
{
o_width = i_style->stroke_width.computed;
- if (o_width < 0.1) {
- o_width = 0.1;
+ if (o_width < 0.01) {
+ o_width = 0.01;
}
o_miter = i_style->stroke_miterlimit.value * o_width;
diff --git a/src/spray-context.cpp b/src/spray-context.cpp
index 07539a080..8d74477c3 100644
--- a/src/spray-context.cpp
+++ b/src/spray-context.cpp
@@ -121,10 +121,10 @@ GType sp_spray_context_get_type(void)
static void sp_spray_context_class_init(SPSprayContextClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_spray_context_dispose;
@@ -223,7 +223,7 @@ static void sp_spray_update_cursor(SPSprayContext *tc, bool /*with_shift*/)
guint num = 0;
gchar *sel_message = NULL;
if (!desktop->selection->isEmpty()) {
- num = g_slist_length((GSList *) desktop->selection->itemList());
+ num = g_slist_length(const_cast<GSList *>(desktop->selection->itemList()));
sel_message = g_strdup_printf(ngettext("<b>%i</b> object selected","<b>%i</b> objects selected",num), num);
} else {
sel_message = g_strdup_printf(_("<b>Nothing</b> selected"));
@@ -251,8 +251,8 @@ static void sp_spray_context_setup(SPEventContext *ec)
{
SPSprayContext *tc = SP_SPRAY_CONTEXT(ec);
- if (((SPEventContextClass *) parent_class)->setup) {
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
}
{
@@ -460,7 +460,7 @@ static bool sp_spray_recursive(SPDesktop *desktop,
parent->appendChild(copy);
SPObject *new_obj = doc->getObjectByRepr(copy);
- item_copied = (SPItem *) new_obj; //convertion object->item
+ item_copied = SP_ITEM(new_obj); //convertion object->item
Geom::Point center=item->getCenter();
sp_spray_scale_rel(center,desktop, item_copied, Geom::Scale(_scale,_scale));
sp_spray_scale_rel(center,desktop, item_copied, Geom::Scale(scale,scale));
@@ -480,11 +480,11 @@ static bool sp_spray_recursive(SPDesktop *desktop,
SPItem *son = NULL; //father copy
int i=1;
- for (GSList *items = g_slist_copy((GSList *) selection->itemList());
+ for (GSList *items = g_slist_copy(const_cast<GSList *>(selection->itemList()));
items != NULL;
items = items->next) {
- SPItem *item1 = (SPItem *) items->data;
+ SPItem *item1 = SP_ITEM(items->data);
if (i == 1) {
father = item1;
}
@@ -504,7 +504,7 @@ static bool sp_spray_recursive(SPDesktop *desktop,
Inkscape::XML::Node *copy1 = old_repr->duplicate(xml_doc);
parent->appendChild(copy1);
SPObject *new_obj1 = doc->getObjectByRepr(copy1);
- son = (SPItem *) new_obj1; // conversion object->item
+ son = SP_ITEM(new_obj1); // conversion object->item
unionResult = son;
Inkscape::GC::release(copy1);
}
@@ -514,7 +514,7 @@ static bool sp_spray_recursive(SPDesktop *desktop,
Inkscape::XML::Node *copy2 = old_repr->duplicate(xml_doc);
parent->appendChild(copy2);
SPObject *new_obj2 = doc->getObjectByRepr(copy2);
- item_copied = (SPItem *) new_obj2;
+ item_copied = SP_ITEM(new_obj2);
// Move around the cursor
Geom::Point move = (Geom::Point(cos(tilt)*cos(dp)*dr/(1-ratio)+sin(tilt)*sin(dp)*dr/(1+ratio), -sin(tilt)*cos(dp)*dr/(1-ratio)+cos(tilt)*sin(dp)*dr/(1+ratio)))+(p-a->midpoint());
@@ -554,7 +554,7 @@ static bool sp_spray_recursive(SPDesktop *desktop,
SPObject *clone_object = doc->getObjectByRepr(clone);
// conversion object->item
- item_copied = (SPItem *) clone_object;
+ item_copied = SP_ITEM(clone_object);
Geom::Point center = item->getCenter();
sp_spray_scale_rel(center, desktop, item_copied, Geom::Scale(_scale, _scale));
sp_spray_scale_rel(center, desktop, item_copied, Geom::Scale(scale, scale));
@@ -599,11 +599,11 @@ static bool sp_spray_dilate(SPSprayContext *tc, Geom::Point /*event_p*/, Geom::P
double move_mean = get_move_mean(tc);
double move_standard_deviation = get_move_standard_deviation(tc);
- for (GSList *items = g_slist_copy((GSList *) selection->itemList());
+ for (GSList *items = g_slist_copy(const_cast<GSList *>(selection->itemList()));
items != NULL;
items = items->next) {
- SPItem *item = (SPItem *) items->data;
+ SPItem *item = SP_ITEM(items->data);
if (is_transform_modes(tc->mode)) {
if (sp_spray_recursive(desktop, selection, item, p, vector, tc->mode, radius, move_force, tc->population, tc->scale, tc->scale_variation, reverse, move_mean, move_standard_deviation, tc->ratio, tc->tilt, tc->rotation_variation, tc->distrib))
@@ -701,7 +701,7 @@ gint sp_spray_context_root_handler(SPEventContext *event_context, GdkEvent *even
guint num = 0;
if (!desktop->selection->isEmpty()) {
- num = g_slist_length((GSList *) desktop->selection->itemList());
+ num = g_slist_length(const_cast<GSList *>(desktop->selection->itemList()));
}
if (num == 0) {
tc->_message_context->flash(Inkscape::ERROR_MESSAGE, _("<b>Nothing selected!</b> Select objects to spray."));
@@ -926,8 +926,8 @@ gint sp_spray_context_root_handler(SPEventContext *event_context, GdkEvent *even
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->root_handler) {
- ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) {
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event);
}
}
diff --git a/src/star-context.cpp b/src/star-context.cpp
index 66e6b3116..ae12e8c35 100644
--- a/src/star-context.cpp
+++ b/src/star-context.cpp
@@ -88,10 +88,10 @@ sp_star_context_get_type (void)
static void
sp_star_context_class_init (SPStarContextClass * klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*)g_type_class_peek_parent (klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent (klass));
object_class->dispose = sp_star_context_dispose;
@@ -128,15 +128,15 @@ sp_star_context_init (SPStarContext * star_context)
static void sp_star_context_finish(SPEventContext *ec)
{
SPStarContext *sc = SP_STAR_CONTEXT(ec);
- SPDesktop *desktop = ec->desktop;
+ SPDesktop *desktop = ec->desktop;
- sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME);
- sp_star_finish(sc);
+ sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME);
+ sp_star_finish(sc);
sc->sel_changed_connection.disconnect();
- if (((SPEventContextClass *) parent_class)->finish) {
- ((SPEventContextClass *) parent_class)->finish(ec);
- }
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->finish) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->finish(ec);
+ }
}
@@ -187,8 +187,8 @@ sp_star_context_setup (SPEventContext *ec)
{
SPStarContext *sc = SP_STAR_CONTEXT (ec);
- if (((SPEventContextClass *) parent_class)->setup)
- ((SPEventContextClass *) parent_class)->setup (ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup)
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup (ec);
sp_event_context_read (ec, "magnitude");
sp_event_context_read (ec, "proportion");
@@ -413,8 +413,8 @@ static gint sp_star_context_root_handler(SPEventContext *event_context, GdkEvent
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->root_handler)
- ret = ((SPEventContextClass *) parent_class)->root_handler (event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler)
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler (event_context, event);
}
return ret;
diff --git a/src/text-context.cpp b/src/text-context.cpp
index d4b53f6a4..90715b805 100644
--- a/src/text-context.cpp
+++ b/src/text-context.cpp
@@ -104,10 +104,10 @@ GType sp_text_context_get_type()
static void sp_text_context_class_init(SPTextContextClass *klass)
{
- GObjectClass *object_class=(GObjectClass *)klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class=G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_text_context_dispose;
@@ -236,8 +236,8 @@ static void sp_text_context_setup(SPEventContext *ec)
}
}
- if (((SPEventContextClass *) parent_class)->setup)
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup)
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
ec->shape_editor = new ShapeEditor(ec->desktop);
@@ -455,8 +455,8 @@ static gint sp_text_context_item_handler(SPEventContext *event_context, SPItem *
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->item_handler)
- ret = ((SPEventContextClass *) parent_class)->item_handler(event_context, item, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler)
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler(event_context, item, event);
}
return ret;
@@ -1324,8 +1324,8 @@ static gint sp_text_context_root_handler(SPEventContext *const event_context, Gd
}
// if nobody consumed it so far
- if (((SPEventContextClass *) parent_class)->root_handler) { // and there's a handler in parent context,
- return ((SPEventContextClass *) parent_class)->root_handler(event_context, event); // send event to parent
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) { // and there's a handler in parent context,
+ return (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); // send event to parent
} else {
return FALSE; // return "I did nothing" value so that global shortcuts can be activated
}
@@ -1428,7 +1428,7 @@ SPCSSAttr *sp_text_get_style_at_cursor(SPEventContext const *ec)
SPObject const *obj = sp_te_object_at_position(tc->text, tc->text_sel_end);
if (obj)
- return take_style_from_item((SPItem *) obj);
+ return take_style_from_item(SP_ITEM(obj));
return NULL;
}
diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp
index 33dab447c..870b9cce1 100644
--- a/src/tweak-context.cpp
+++ b/src/tweak-context.cpp
@@ -114,10 +114,10 @@ sp_tweak_context_get_type(void)
static void
sp_tweak_context_class_init(SPTweakContextClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
- parent_class = (SPEventContextClass*)g_type_class_peek_parent(klass);
+ parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_tweak_context_dispose;
@@ -200,7 +200,7 @@ sp_tweak_update_cursor (SPTweakContext *tc, bool with_shift)
guint num = 0;
gchar *sel_message = NULL;
if (!desktop->selection->isEmpty()) {
- num = g_slist_length((GSList *) desktop->selection->itemList());
+ num = g_slist_length(const_cast<GSList *>(desktop->selection->itemList()));
sel_message = g_strdup_printf(ngettext("<b>%i</b> object selected","<b>%i</b> objects selected",num), num);
} else {
sel_message = g_strdup_printf(_("<b>Nothing</b> selected"));
@@ -277,7 +277,7 @@ sp_tweak_context_style_set(SPCSSAttr const *css, SPTweakContext *tc)
{
if (tc->mode == TWEAK_MODE_COLORPAINT) { // intercept color setting only in this mode
// we cannot store properties with uris
- css = sp_css_attr_unset_uris ((SPCSSAttr *) css);
+ css = sp_css_attr_unset_uris (const_cast<SPCSSAttr *>(css));
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setStyle("/tools/tweak/style", const_cast<SPCSSAttr*>(css));
return true;
@@ -290,8 +290,8 @@ sp_tweak_context_setup(SPEventContext *ec)
{
SPTweakContext *tc = SP_TWEAK_CONTEXT(ec);
- if (((SPEventContextClass *) parent_class)->setup) {
- ((SPEventContextClass *) parent_class)->setup(ec);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) {
+ (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
}
{
@@ -419,9 +419,9 @@ sp_tweak_dilate_recursive (Inkscape::Selection *selection, SPItem *item, Geom::P
SPDocument *doc = item->document;
sp_item_list_to_curves (items, &selected, &to_select);
g_slist_free (items);
- SPObject* newObj = doc->getObjectByRepr((Inkscape::XML::Node *) to_select->data);
+ SPObject* newObj = doc->getObjectByRepr(static_cast<Inkscape::XML::Node *>(to_select->data));
g_slist_free (to_select);
- item = (SPItem *) newObj;
+ item = SP_ITEM(newObj);
selection->add(item);
}
@@ -1110,11 +1110,11 @@ sp_tweak_dilate (SPTweakContext *tc, Geom::Point event_p, Geom::Point p, Geom::P
double move_force = get_move_force(tc);
double color_force = MIN(sqrt(path_force)/20.0, 1);
- for (GSList *items = g_slist_copy((GSList *) selection->itemList());
+ for (GSList *items = g_slist_copy(const_cast<GSList *>(selection->itemList()));
items != NULL;
items = items->next) {
- SPItem *item = (SPItem *) items->data;
+ SPItem *item = SP_ITEM(items->data);
if (is_color_mode (tc->mode)) {
if (do_fill || do_stroke || do_opacity) {
@@ -1227,7 +1227,7 @@ sp_tweak_context_root_handler(SPEventContext *event_context,
guint num = 0;
if (!desktop->selection->isEmpty()) {
- num = g_slist_length((GSList *) desktop->selection->itemList());
+ num = g_slist_length(const_cast<GSList *>(desktop->selection->itemList()));
}
if (num == 0) {
tc->_message_context->flash(Inkscape::ERROR_MESSAGE, _("<b>Nothing selected!</b> Select objects to tweak."));
@@ -1535,8 +1535,8 @@ sp_tweak_context_root_handler(SPEventContext *event_context,
}
if (!ret) {
- if (((SPEventContextClass *) parent_class)->root_handler) {
- ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event);
+ if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) {
+ ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event);
}
}
diff --git a/src/ui/dialog/debug.cpp b/src/ui/dialog/debug.cpp
index da38e2dde..429ed57bf 100644
--- a/src/ui/dialog/debug.cpp
+++ b/src/ui/dialog/debug.cpp
@@ -126,7 +126,7 @@ void DebugDialogImpl::show()
{
//call super()
Gtk::Dialog::show();
- //sp_transientize((GtkWidget *)gobj()); //Make transient
+ //sp_transientize(GTK_WIDGET(gobj())); //Make transient
raise();
Gtk::Dialog::present();
}
diff --git a/src/ui/dialog/document-properties.cpp b/src/ui/dialog/document-properties.cpp
index ab1e8fbd8..460e223a3 100644
--- a/src/ui/dialog/document-properties.cpp
+++ b/src/ui/dialog/document-properties.cpp
@@ -103,7 +103,7 @@ DocumentProperties::DocumentProperties()
_rcb_canb(_("Show page _border"), _("If set, rectangular page border is shown"), "showborder", _wr, false),
_rcb_bord(_("Border on _top of drawing"), _("If set, border is always on top of the drawing"), "borderlayer", _wr, false),
_rcb_shad(_("_Show border shadow"), _("If set, page border shows a shadow on its right and lower side"), "inkscape:showpageshadow", _wr, false),
- _rcp_bg(_("Back_ground color:"), _("Background color"), _("Color and transparency of the page background (also used for bitmap export)"), "pagecolor", "inkscape:pageopacity", _wr),
+ _rcp_bg(_("Back_ground color:"), _("Background color"), _("Color of the page background. Note: transparency setting ignored while editing but used when exporting to bitmap."), "pagecolor", "inkscape:pageopacity", _wr),
_rcp_bord(_("Border _color:"), _("Page border color"), _("Color of the page border"), "bordercolor", "borderopacity", _wr),
_rum_deflt(_("Default _units:"), "inkscape:document-units", _wr),
_page_sizer(_wr),
diff --git a/src/ui/dialog/filedialogimpl-gtkmm.cpp b/src/ui/dialog/filedialogimpl-gtkmm.cpp
index 553acac84..75f80ed4a 100644
--- a/src/ui/dialog/filedialogimpl-gtkmm.cpp
+++ b/src/ui/dialog/filedialogimpl-gtkmm.cpp
@@ -100,9 +100,9 @@ findEntryWidgets(Gtk::Container *parent,
Gtk::Widget *child = children[i];
GtkWidget *wid = child->gobj();
if (GTK_IS_ENTRY(wid))
- result.push_back((Gtk::Entry *)child);
+ result.push_back(dynamic_cast<Gtk::Entry *>(child));
else if (GTK_IS_CONTAINER(wid))
- findEntryWidgets((Gtk::Container *)child, result);
+ findEntryWidgets(dynamic_cast<Gtk::Container *>(child), result);
}
}
@@ -119,9 +119,9 @@ findExpanderWidgets(Gtk::Container *parent,
Gtk::Widget *child = children[i];
GtkWidget *wid = child->gobj();
if (GTK_IS_EXPANDER(wid))
- result.push_back((Gtk::Expander *)child);
+ result.push_back(dynamic_cast<Gtk::Expander *>(child));
else if (GTK_IS_CONTAINER(wid))
- findExpanderWidgets((Gtk::Container *)child, result);
+ findExpanderWidgets(dynamic_cast<Gtk::Container *>(child), result);
}
}
@@ -522,7 +522,7 @@ bool SVGPreview::set(Glib::ustring &fileName, int dialogType)
if (Glib::file_test(fileName, Glib::FILE_TEST_IS_REGULAR))
{
Glib::ustring fileNameUtf8 = Glib::filename_to_utf8(fileName);
- gchar *fName = (gchar *)fileNameUtf8.c_str();
+ gchar *fName = const_cast<gchar *>(fileNameUtf8.c_str());
struct stat info;
if (g_stat(fName, &info))
{
@@ -898,7 +898,7 @@ bool
FileOpenDialogImplGtk::show()
{
set_modal (TRUE); //Window
- sp_transientize((GtkWidget *)gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(gobj())); //Make transient
gint b = run(); //Dialog
svgPreview.showNoPreview();
hide();
@@ -1241,7 +1241,7 @@ FileSaveDialogImplGtk::show()
{
change_path(myFilename);
set_modal (TRUE); //Window
- sp_transientize((GtkWidget *)gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(gobj())); //Make transient
gint b = run(); //Dialog
svgPreview.showNoPreview();
set_preview_widget_active(false);
@@ -1688,7 +1688,7 @@ FileExportDialogImpl::show()
s = getcwd (NULL, 0);
set_current_folder(Glib::filename_from_utf8(s)); //hack to force initial dir listing
set_modal (TRUE); //Window
- sp_transientize((GtkWidget *)gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(gobj())); //Make transient
gint b = run(); //Dialog
svgPreview.showNoPreview();
hide();
diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp
index 6769a25ef..7574b9266 100644
--- a/src/ui/dialog/filter-effects-dialog.cpp
+++ b/src/ui/dialog/filter-effects-dialog.cpp
@@ -1454,6 +1454,41 @@ Glib::PropertyProxy<void*> FilterEffectsDialog::CellRendererConnection::property
return _primitive.get_proxy();
}
+#if WITH_GTKMM_3_0
+void FilterEffectsDialog::CellRendererConnection::get_preferred_width_vfunc(Gtk::Widget& widget,
+ int& minimum_width,
+ int& natural_width) const
+{
+ PrimitiveList& primlist = dynamic_cast<PrimitiveList&>(widget);
+ minimum_width = natural_width = size * primlist.primitive_count() + primlist.get_input_type_width() * 6;
+}
+
+void FilterEffectsDialog::CellRendererConnection::get_preferred_width_for_height_vfunc(Gtk::Widget& widget,
+ int /* height */,
+ int& minimum_width,
+ int& natural_width) const
+{
+ get_preferred_width(widget, minimum_width, natural_width);
+}
+
+void FilterEffectsDialog::CellRendererConnection::get_preferred_height_vfunc(Gtk::Widget& widget,
+ int& minimum_height,
+ int& natural_height) const
+{
+ // Scale the height depending on the number of inputs, unless it's
+ // the first primitive, in which case there are no connections
+ SPFilterPrimitive* prim = SP_FILTER_PRIMITIVE(_primitive.get_value());
+ minimum_height = natural_height = size * input_count(prim);
+}
+
+void FilterEffectsDialog::CellRendererConnection::get_preferred_height_for_width_vfunc(Gtk::Widget& widget,
+ int /* width */,
+ int& minimum_height,
+ int& natural_height) const
+{
+ get_preferred_height(widget, minimum_height, natural_height);
+}
+#else
void FilterEffectsDialog::CellRendererConnection::get_size_vfunc(
Gtk::Widget& widget, const Gdk::Rectangle* /*cell_area*/,
int* x_offset, int* y_offset, int* width, int* height) const
@@ -1473,6 +1508,7 @@ void FilterEffectsDialog::CellRendererConnection::get_size_vfunc(
(*height) = size * input_count(prim);
}
}
+#endif
/*** PrimitiveList ***/
FilterEffectsDialog::PrimitiveList::PrimitiveList(FilterEffectsDialog& d)
@@ -1481,8 +1517,8 @@ FilterEffectsDialog::PrimitiveList::PrimitiveList(FilterEffectsDialog& d)
_observer(new Inkscape::XML::SignalObserver)
{
#if WITH_GTKMM_3_0
- d.signal_draw().connect(sigc::mem_fun(*this, &PrimitiveList::on_draw));
- signal_draw().connect(sigc::mem_fun(*this, &PrimitiveList::on_draw));
+ d.signal_draw().connect(sigc::mem_fun(*this, &PrimitiveList::on_draw_signal));
+ signal_draw().connect(sigc::mem_fun(*this, &PrimitiveList::on_draw_signal));
#else
d.signal_expose_event().connect(sigc::mem_fun(*this, &PrimitiveList::on_expose_signal));
signal_expose_event().connect(sigc::mem_fun(*this, &PrimitiveList::on_expose_signal));
@@ -1496,6 +1532,7 @@ FilterEffectsDialog::PrimitiveList::PrimitiveList(FilterEffectsDialog& d)
set_model(_model);
append_column(_("_Effect"), _columns.type);
+ set_headers_visible();
_observer->signal_changed().connect(signal_primitive_changed().make_slot());
get_selection()->signal_changed().connect(sigc::mem_fun(*this, &PrimitiveList::on_primitive_selection_changed));
@@ -1648,19 +1685,32 @@ void FilterEffectsDialog::PrimitiveList::remove_selected()
}
#if !WITH_GTKMM_3_0
-bool FilterEffectsDialog::PrimitiveList::on_expose_signal(GdkEventExpose* /*e*/)
+bool FilterEffectsDialog::PrimitiveList::on_expose_signal(GdkEventExpose *e)
{
- Glib::RefPtr<Gdk::Window> win = get_bin_window();
- Cairo::RefPtr<Cairo::Context> cr = win->create_cairo_context();
- return on_draw(cr);
+ bool result = false;
+
+ if (get_is_drawable())
+ {
+ Cairo::RefPtr<Cairo::Context> cr = get_bin_window()->create_cairo_context();
+ result = on_draw_signal(cr);
+ }
+
+ return result;
}
#endif
-bool FilterEffectsDialog::PrimitiveList::on_draw(const Cairo::RefPtr<Cairo::Context> &cr)
+bool FilterEffectsDialog::PrimitiveList::on_draw_signal(const Cairo::RefPtr<Cairo::Context> & cr)
{
cr->set_line_width(1.0);
#if GTK_CHECK_VERSION(3,0,0)
+ // In GTK+ 3, the draw function receives the widget window, not the
+ // bin_window (i.e., just the area under the column headers). We
+ // therefore translate the origin of our coordinate system to account for this
+ int x_origin, y_origin;
+ convert_bin_window_to_widget_coords(0,0,x_origin,y_origin);
+ cr->translate(x_origin, y_origin);
+
GtkStyleContext *sc = gtk_widget_get_style_context(GTK_WIDGET(gobj()));
GdkRGBA bg_color, fg_color;
gtk_style_context_get_background_color(sc, GTK_STATE_FLAG_NORMAL, &bg_color);
diff --git a/src/ui/dialog/filter-effects-dialog.h b/src/ui/dialog/filter-effects-dialog.h
index 1652a314f..355a8b1b2 100644
--- a/src/ui/dialog/filter-effects-dialog.h
+++ b/src/ui/dialog/filter-effects-dialog.h
@@ -151,8 +151,28 @@ private:
static const int size = 24;
protected:
+#if WITH_GTKMM_3_0
+ virtual void get_preferred_width_vfunc(Gtk::Widget& widget,
+ int& minimum_width,
+ int& natural_width) const;
+
+ virtual void get_preferred_width_for_height_vfunc(Gtk::Widget& widget,
+ int height,
+ int& minimum_width,
+ int& natural_width) const;
+
+ virtual void get_preferred_height_vfunc(Gtk::Widget& widget,
+ int& minimum_height,
+ int& natural_height) const;
+
+ virtual void get_preferred_height_for_width_vfunc(Gtk::Widget& widget,
+ int width,
+ int& minimum_height,
+ int& natural_height) const;
+#else
virtual void get_size_vfunc(Gtk::Widget& widget, const Gdk::Rectangle* cell_area,
int* x_offset, int* y_offset, int* width, int* height) const;
+#endif
private:
// void* should be SPFilterPrimitive*, some weirdness with properties prevents this
Glib::Property<void*> _primitive;
@@ -177,7 +197,7 @@ private:
int get_input_type_width() const;
protected:
- bool on_draw(const Cairo::RefPtr<Cairo::Context> &cr);
+ bool on_draw_signal(const Cairo::RefPtr<Cairo::Context> &cr);
#if !WITH_GTKMM_3_0
bool on_expose_signal(GdkEventExpose*);
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 20e5d3ca6..6e6473c5a 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -320,6 +320,7 @@ void InkscapePreferences::initPageTools()
AddSelcueCheckbox(_page_selector, "/tools/select", false);
+ AddGradientCheckbox(_page_selector, "/tools/select", false);
_page_selector.add_group_header( _("When transforming, show"));
_t_sel_trans_obj.init ( _("Objects"), "/tools/select/show", "content", true, 0);
_page_selector.add_line( true, "", _t_sel_trans_obj, "",
diff --git a/src/ui/dialog/ocaldialogs.cpp b/src/ui/dialog/ocaldialogs.cpp
index 8f5f2ed22..75c766566 100644
--- a/src/ui/dialog/ocaldialogs.cpp
+++ b/src/ui/dialog/ocaldialogs.cpp
@@ -139,7 +139,7 @@ bool
ExportDialog::show()
{
set_modal (TRUE); //Window
- sp_transientize((GtkWidget *)gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(gobj())); //Make transient
gint b = run(); //Dialog
hide();
@@ -244,7 +244,7 @@ bool
ExportPasswordDialog::show()
{
set_modal (TRUE); //Window
- sp_transientize((GtkWidget *)gobj()); //Make transient
+ sp_transientize(GTK_WIDGET(gobj())); //Make transient
gint b = run(); //Dialog
hide();
@@ -561,6 +561,7 @@ void StatusWidget::end_process()
clear();
}
+#if !GTK_CHECK_VERSION(3,6,0)
SearchEntry::SearchEntry() : Gtk::Entry()
{
signal_changed().connect(sigc::mem_fun(*this, &SearchEntry::_on_changed));
@@ -589,6 +590,8 @@ void SearchEntry::_on_changed()
set_icon_from_stock(Gtk::Stock::CLEAR, Gtk::ENTRY_ICON_SECONDARY);
}
}
+#endif
+
BaseBox::BaseBox() : Gtk::EventBox()
{
@@ -957,40 +960,40 @@ void SearchResultList::populate_from_xml(xmlNode * a_node)
for (xmlNode *cur_node = a_node; cur_node; cur_node = cur_node->next) {
// Get items information
- if (strcmp((const char*)cur_node->name, "rss")) // Avoid the root
+ if (strcmp(reinterpret_cast<const char*>(cur_node->name), "rss")) // Avoid the root
if (cur_node->type == XML_ELEMENT_NODE &&
- (cur_node->parent->name && !strcmp((const char*)cur_node->parent->name, "item")))
+ (cur_node->parent->name && !strcmp(reinterpret_cast<const char*>(cur_node->parent->name), "item")))
{
- if (!strcmp((const char*)cur_node->name, "title"))
+ if (!strcmp(reinterpret_cast<const char*>(cur_node->name), "title"))
{
row_num = append("");
xmlChar *xml_title = xmlNodeGetContent(cur_node);
- char* title = (char*) xml_title;
+ char* title = reinterpret_cast<char*>(xml_title);
set_text(row_num, RESULTS_COLUMN_TITLE, title);
xmlFree(title);
}
- else if (!strcmp((const char*)cur_node->name, "pubDate"))
+ else if (!strcmp(reinterpret_cast<const char*>(cur_node->name), "pubDate"))
{
xmlChar *xml_date = xmlNodeGetContent(cur_node);
- char* date = (char*) xml_date;
+ char* date = reinterpret_cast<char*>(xml_date);
set_text(row_num, RESULTS_COLUMN_DATE, date);
xmlFree(xml_date);
}
- else if (!strcmp((const char*)cur_node->name, "creator"))
+ else if (!strcmp(reinterpret_cast<const char*>(cur_node->name), "creator"))
{
xmlChar *xml_creator = xmlNodeGetContent(cur_node);
- char* creator = (char*) xml_creator;
+ char* creator = reinterpret_cast<char*>(xml_creator);
set_text(row_num, RESULTS_COLUMN_CREATOR, creator);
xmlFree(xml_creator);
}
- else if (!strcmp((const char*)cur_node->name, "description"))
+ else if (!strcmp(reinterpret_cast<const char*>(cur_node->name), "description"))
{
xmlChar *xml_description = xmlNodeGetContent(cur_node);
//char* final_description;
- char* stripped_description = g_strstrip((char*) xml_description);
+ char* stripped_description = g_strstrip(reinterpret_cast<char*>(xml_description));
if (!strcmp(stripped_description, "")) {
stripped_description = _("No description");
@@ -1002,30 +1005,30 @@ void SearchResultList::populate_from_xml(xmlNode * a_node)
set_text(row_num, RESULTS_COLUMN_DESCRIPTION, stripped_description);
xmlFree(xml_description);
}
- else if (!strcmp((const char*)cur_node->name, "enclosure"))
+ else if (!strcmp(reinterpret_cast<const char*>(cur_node->name), "enclosure"))
{
- xmlChar *xml_url = xmlGetProp(cur_node, (xmlChar*) "url");
- char* url = (char*) xml_url;
+ xmlChar *xml_url = xmlGetProp(cur_node, reinterpret_cast<xmlChar*>(g_strdup("url")));
+ char* url = reinterpret_cast<char*>(xml_url);
char* filename = g_path_get_basename(url);
set_text(row_num, RESULTS_COLUMN_URL, url);
set_text(row_num, RESULTS_COLUMN_FILENAME, filename);
xmlFree(xml_url);
}
- else if (!strcmp((const char*)cur_node->name, "thumbnail"))
+ else if (!strcmp(reinterpret_cast<const char*>(cur_node->name), "thumbnail"))
{
- xmlChar *xml_thumbnail_url = xmlGetProp(cur_node, (xmlChar*) "url");
- char* thumbnail_url = (char*) xml_thumbnail_url;
+ xmlChar *xml_thumbnail_url = xmlGetProp(cur_node, reinterpret_cast<xmlChar*>(g_strdup("url")));
+ char* thumbnail_url = reinterpret_cast<char*>(xml_thumbnail_url);
char* thumbnail_filename = g_path_get_basename(thumbnail_url);
set_text(row_num, RESULTS_COLUMN_THUMBNAIL_URL, thumbnail_url);
set_text(row_num, RESULTS_COLUMN_THUMBNAIL_FILENAME, thumbnail_filename);
xmlFree(xml_thumbnail_url);
}
- else if (!strcmp((const char*)cur_node->name, "guid"))
+ else if (!strcmp(reinterpret_cast<const char*>(cur_node->name), "guid"))
{
xmlChar *xml_guid = xmlNodeGetContent(cur_node);
- char* guid_url = (char*) xml_guid;
+ char* guid_url = reinterpret_cast<char*>(xml_guid);
char* guid = g_path_get_basename(guid_url);
set_text(row_num, RESULTS_COLUMN_GUID, guid);
@@ -1208,7 +1211,13 @@ ImportDialog::ImportDialog(Gtk::Window& parent_window, FileDialogType file_types
BaseBox *basebox_no_search_results = new BaseBox();
label_not_found = new Gtk::Label();
label_description = new Gtk::Label();
+
+#if GTK_CHECK_VERSION(3,6,0)
+ entry_search = new Gtk::SearchEntry();
+#else
entry_search = new SearchEntry();
+#endif
+
button_search = new Gtk::Button(_("Search"));
#if WITH_GTKMM_3_0
diff --git a/src/ui/dialog/ocaldialogs.h b/src/ui/dialog/ocaldialogs.h
index 1cdfa15bb..326542579 100644
--- a/src/ui/dialog/ocaldialogs.h
+++ b/src/ui/dialog/ocaldialogs.h
@@ -21,6 +21,11 @@
#include <gtkmm/listviewtext.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/window.h>
+
+#if GTK_CHECK_VERSION(3,6,0)
+# include <gtkmm/searchentry.h>
+#endif
+
#include <giomm/file.h>
//Inkscape includes
@@ -328,6 +333,7 @@ public:
Gtk::Label* label;
};
+#if !GTK_CHECK_VERSION(3,6,0)
/**
* A Gtk::Entry with search & clear icons
*/
@@ -340,6 +346,7 @@ private:
void _on_icon_pressed(Gtk::EntryIconPosition icon_position, const GdkEventButton* event);
void _on_changed();
};
+#endif
/**
* A box which paints an overlay of the OCAL logo
@@ -449,7 +456,13 @@ protected:
private:
Glib::ustring filename_image;
Glib::ustring filename_thumbnail;
+
+#if GTK_CHECK_VERSION(3,6,0)
+ Gtk::SearchEntry *entry_search;
+#else
SearchEntry *entry_search;
+#endif
+
LogoArea *drawingarea_logo;
SearchResultList *list_results;
PreviewWidget *preview_files;
diff --git a/src/ui/dialog/tile.cpp b/src/ui/dialog/tile.cpp
index 1ce78a278..410cdbda9 100644
--- a/src/ui/dialog/tile.cpp
+++ b/src/ui/dialog/tile.cpp
@@ -194,7 +194,7 @@ void TileDialog::Grid_Arrange ()
g_return_if_fail(selection);
const GSList *items2 = selection->itemList();
- GSList *rev = g_slist_copy((GSList *) items2);
+ GSList *rev = g_slist_copy(const_cast<GSList *>(items2));
GSList *sorted = NULL;
rev = g_slist_sort(rev, (GCompareFunc) sp_compare_y_position);
sorted = g_slist_sort(rev, (GCompareFunc) sp_compare_x_position);
@@ -667,7 +667,7 @@ TileDialog::TileDialog()
NoOfRowsSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_col_spinbutton_changed));
NoOfRowsSpinner.set_tooltip_text(_("Number of rows"));
NoOfRowsBox.pack_start(NoOfRowsSpinner, false, false, MARGIN);
- gtk_size_group_add_widget(_col1, (GtkWidget *) NoOfRowsBox.gobj());
+ gtk_size_group_add_widget(_col1, GTK_WIDGET(NoOfRowsBox.gobj()));
RowHeightButton.set_label(_("Equal _height"));
RowHeightButton.set_use_underline(true);
@@ -724,7 +724,7 @@ TileDialog::TileDialog()
XByYLabel.set_markup(" &#215; ");
XByYLabelVBox.pack_start(XByYLabel, false, false, MARGIN);
SpinsHBox.pack_start(XByYLabelVBox, false, false, MARGIN);
- gtk_size_group_add_widget(_col2, (GtkWidget *) XByYLabelVBox.gobj());
+ gtk_size_group_add_widget(_col2, GTK_WIDGET(XByYLabelVBox.gobj()));
/*#### Number of columns ####*/
@@ -739,7 +739,7 @@ TileDialog::TileDialog()
NoOfColsSpinner.signal_changed().connect(sigc::mem_fun(*this, &TileDialog::on_row_spinbutton_changed));
NoOfColsSpinner.set_tooltip_text(_("Number of columns"));
NoOfColsBox.pack_start(NoOfColsSpinner, false, false, MARGIN);
- gtk_size_group_add_widget(_col3, (GtkWidget *) NoOfColsBox.gobj());
+ gtk_size_group_add_widget(_col3, GTK_WIDGET(NoOfColsBox.gobj()));
ColumnWidthButton.set_label(_("Equal _width"));
ColumnWidthButton.set_use_underline(true);
diff --git a/src/ui/widget/color-preview.cpp b/src/ui/widget/color-preview.cpp
index 3ebb282ec..4b4a7b738 100644
--- a/src/ui/widget/color-preview.cpp
+++ b/src/ui/widget/color-preview.cpp
@@ -26,13 +26,6 @@ ColorPreview::ColorPreview (guint32 rgba)
}
void
-ColorPreview::on_size_request (Gtk::Requisition *req)
-{
- req->width = SPCP_DEFAULT_WIDTH;
- req->height = SPCP_DEFAULT_HEIGHT;
-}
-
-void
ColorPreview::on_size_allocate (Gtk::Allocation &all)
{
set_allocation (all);
@@ -40,14 +33,55 @@ ColorPreview::on_size_allocate (Gtk::Allocation &all)
queue_draw();
}
+#if WITH_GTKMM_3_0
+void
+ColorPreview::get_preferred_height_vfunc(int& minimum_height, int& natural_height) const
+{
+ minimum_height = natural_height = SPCP_DEFAULT_HEIGHT;
+}
+
+void
+ColorPreview::get_preferred_height_for_width_vfunc(int /* width */, int& minimum_height, int& natural_height) const
+{
+ minimum_height = natural_height = SPCP_DEFAULT_HEIGHT;
+}
+
+void
+ColorPreview::get_preferred_width_vfunc(int& minimum_width, int& natural_width) const
+{
+ minimum_width = natural_width = SPCP_DEFAULT_WIDTH;
+}
+
+void
+ColorPreview::get_preferred_width_for_height_vfunc(int /* height */, int& minimum_width, int& natural_width) const
+{
+ minimum_width = natural_width = SPCP_DEFAULT_WIDTH;
+}
+#else
+void
+ColorPreview::on_size_request (Gtk::Requisition *req)
+{
+ req->width = SPCP_DEFAULT_WIDTH;
+ req->height = SPCP_DEFAULT_HEIGHT;
+}
+
bool
ColorPreview::on_expose_event (GdkEventExpose *event)
{
+ bool result = true;
+
if (get_is_drawable())
- paint (&event->area);
+ {
+ Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
+ cr->rectangle(event->area.x, event->area.y,
+ event->area.width, event->area.height);
+ cr->clip();
+ result = on_draw(cr);
+ }
- return true;
+ return result;
}
+#endif
void
ColorPreview::setRgba32 (guint32 rgba)
@@ -58,11 +92,10 @@ ColorPreview::setRgba32 (guint32 rgba)
queue_draw();
}
-void
-ColorPreview::paint (GdkRectangle *area)
+bool
+ColorPreview::on_draw(const Cairo::RefPtr<Cairo::Context>& cr)
{
GdkRectangle warea, carea;
- GdkRectangle wpaint, cpaint;
gint w2;
const Gtk::Allocation& allocation = get_allocation();
@@ -71,12 +104,6 @@ ColorPreview::paint (GdkRectangle *area)
warea.width = allocation.get_width();
warea.height = allocation.get_height();
- if (!gdk_rectangle_intersect (area, &warea, &wpaint))
- return;
-
- GtkWidget *widget = GTK_WIDGET(this->gobj());
- cairo_t *ct = gdk_cairo_create(gtk_widget_get_window(widget));
-
/* Transparent area */
w2 = warea.width / 2;
@@ -86,17 +113,15 @@ ColorPreview::paint (GdkRectangle *area)
carea.width = w2;
carea.height = warea.height;
- if (gdk_rectangle_intersect (area, &carea, &cpaint)) {
- cairo_pattern_t *checkers = ink_cairo_pattern_create_checkerboard();
+ cairo_pattern_t *checkers = ink_cairo_pattern_create_checkerboard();
- cairo_rectangle(ct, carea.x, carea.y, carea.width, carea.height);
- cairo_set_source(ct, checkers);
- cairo_fill_preserve(ct);
- ink_cairo_set_source_rgba32(ct, _rgba);
- cairo_fill(ct);
+ cr->rectangle(carea.x, carea.y, carea.width, carea.height);
+ cairo_set_source(cr->cobj(), checkers);
+ cr->fill_preserve();
+ ink_cairo_set_source_rgba32(cr->cobj(), _rgba);
+ cr->fill();
- cairo_pattern_destroy(checkers);
- }
+ cairo_pattern_destroy(checkers);
/* Solid area */
@@ -105,13 +130,11 @@ ColorPreview::paint (GdkRectangle *area)
carea.width = warea.width - w2;
carea.height = warea.height;
- if (gdk_rectangle_intersect (area, &carea, &cpaint)) {
- cairo_rectangle(ct, carea.x, carea.y, carea.width, carea.height);
- ink_cairo_set_source_rgba32(ct, _rgba | 0xff);
- cairo_fill(ct);
- }
+ cr->rectangle(carea.x, carea.y, carea.width, carea.height);
+ ink_cairo_set_source_rgba32(cr->cobj(), _rgba | 0xff);
+ cr->fill();
- cairo_destroy(ct);
+ return true;
}
GdkPixbuf*
@@ -173,3 +196,4 @@ ColorPreview::toPixbuf (int width, int height)
fill-column:99
End:
*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :
diff --git a/src/ui/widget/color-preview.h b/src/ui/widget/color-preview.h
index d6d3da01c..caddfb9a2 100644
--- a/src/ui/widget/color-preview.h
+++ b/src/ui/widget/color-preview.h
@@ -11,6 +11,10 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
#include <gtkmm/widget.h>
namespace Inkscape {
@@ -27,10 +31,19 @@ public:
GdkPixbuf* toPixbuf (int width, int height);
protected:
- virtual void on_size_request (Gtk::Requisition *req);
virtual void on_size_allocate (Gtk::Allocation &all);
- virtual bool on_expose_event (GdkEventExpose *event);
- void paint (GdkRectangle *area);
+
+#if WITH_GTKMM_3_0
+ virtual void get_preferred_height_vfunc(int& minimum_height, int& natural_height) const;
+ virtual void get_preferred_height_for_width_vfunc(int width, int& minimum_height, int& natural_height) const;
+ virtual void get_preferred_width_vfunc(int& minimum_width, int& natural_width) const;
+ virtual void get_preferred_width_for_height_vfunc(int height, int& minimum_width, int& natural_width) const;
+#else
+ virtual void on_size_request (Gtk::Requisition *req);
+ virtual bool on_expose_event(GdkEventExpose *event);
+#endif
+
+ virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
guint32 _rgba;
};
diff --git a/src/ui/widget/imageicon.cpp b/src/ui/widget/imageicon.cpp
index 567608ef8..1c36dc36e 100644
--- a/src/ui/widget/imageicon.cpp
+++ b/src/ui/widget/imageicon.cpp
@@ -117,7 +117,7 @@ bool ImageIcon::showSvgDocument(const SPDocument *docArg)
viewerGtkmm->show();
pack_start(*viewerGtkmm, TRUE, TRUE, 0);
- //GtkWidget *vbox = (GtkWidget *)gobj();
+ //GtkWidget *vbox = GTK_WIDGET(gobj());
//gtk_box_pack_start(GTK_BOX(vbox), viewerGtk, TRUE, TRUE, 0);
return true;
@@ -306,7 +306,7 @@ void ImageIcon::showBrokenImage(const Glib::ustring &errorMessage)
"</svg>";
//Fill in the template
- char *cErrorMessage = (char *)errorMessage.c_str();
+ char *cErrorMessage = const_cast<char *>(errorMessage.c_str());
gchar *xmlBuffer = g_strdup_printf(xformat, cErrorMessage);
//g_message("%s\n", xmlBuffer);
@@ -375,7 +375,7 @@ bool ImageIcon::show(const Glib::ustring &fileName)
if (!Glib::file_test(fileName, Glib::FILE_TEST_EXISTS))
return false;
- gchar *fName = (gchar *)fileName.c_str();
+ gchar *fName = const_cast<gchar *>(fileName.c_str());
//g_message("fname:%s\n", fName);
diff --git a/src/ui/widget/object-composite-settings.cpp b/src/ui/widget/object-composite-settings.cpp
index 2789676ea..537db0fdd 100644
--- a/src/ui/widget/object-composite-settings.cpp
+++ b/src/ui/widget/object-composite-settings.cpp
@@ -89,8 +89,8 @@ ObjectCompositeSettings::ObjectCompositeSettings(unsigned int verb_code, char co
/* SizeGroup keeps the blur and opacity labels aligned in Fill & Stroke dlg */
/*
GtkSizeGroup *labels = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- gtk_size_group_add_widget(labels, (GtkWidget *) _opacity_label.gobj());
- gtk_size_group_add_widget(labels, (GtkWidget *) _fe_cb.get_blur_label()->gobj());
+ gtk_size_group_add_widget(labels, GTK_WIDGET(_opacity_label.gobj()));
+ gtk_size_group_add_widget(labels, GTK_WIDGET(_fe_cb.get_blur_label()->gobj()));
*/
show_all_children();
diff --git a/src/ui/widget/preferences-widget.cpp b/src/ui/widget/preferences-widget.cpp
index e7e317d11..e5b062ec9 100644
--- a/src/ui/widget/preferences-widget.cpp
+++ b/src/ui/widget/preferences-widget.cpp
@@ -373,10 +373,27 @@ ZoomCorrRuler::draw_marks(Cairo::RefPtr<Cairo::Context> cr, double dist, int maj
}
}
-void
-ZoomCorrRuler::redraw() {
+#if !WITH_GTKMM_3_0
+bool
+ZoomCorrRuler::on_expose_event(GdkEventExpose *event) {
+ bool result = false;
+
+ if(get_is_drawable())
+ {
+ Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
+ cr->rectangle(event->area.x, event->area.y,
+ event->area.width, event->area.height);
+ cr->clip();
+ result = on_draw(cr);
+ }
+
+ return result;
+}
+#endif
+
+bool
+ZoomCorrRuler::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) {
Glib::RefPtr<Gdk::Window> window = get_window();
- Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context();
int w = window->get_width();
_drawing_width = w - _border * 2;
@@ -415,14 +432,11 @@ ZoomCorrRuler::redraw() {
draw_marks(cr, 1, 1);
}
cr->stroke();
-}
-bool
-ZoomCorrRuler::on_expose_event(GdkEventExpose */*event*/) {
- this->redraw();
return true;
}
+
void
ZoomCorrRulerSlider::on_slider_value_changed()
{
@@ -432,7 +446,7 @@ ZoomCorrRulerSlider::on_slider_value_changed()
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setDouble("/options/zoomcorrection/value", _slider.get_value() / 100.0);
_sb.set_value(_slider.get_value());
- _ruler.redraw();
+ _ruler.queue_draw();
freeze = false;
}
}
@@ -446,7 +460,7 @@ ZoomCorrRulerSlider::on_spinbutton_value_changed()
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setDouble("/options/zoomcorrection/value", _sb.get_value() / 100.0);
_slider.set_value(_sb.get_value());
- _ruler.redraw();
+ _ruler.queue_draw();
freeze = false;
}
}
@@ -463,7 +477,7 @@ ZoomCorrRulerSlider::on_unit_changed() {
double conv = _unit.getConversion(_unit.getUnitAbbr(), "px");
_ruler.set_unit_conversion(conv);
if (_ruler.get_visible()) {
- _ruler.redraw();
+ _ruler.queue_draw();
}
}
diff --git a/src/ui/widget/preferences-widget.h b/src/ui/widget/preferences-widget.h
index bfe0deaba..646a8b2fa 100644
--- a/src/ui/widget/preferences-widget.h
+++ b/src/ui/widget/preferences-widget.h
@@ -101,8 +101,6 @@ public:
ZoomCorrRuler(int width = 100, int height = 20);
void set_size(int x, int y);
void set_unit_conversion(double conv) { _unitconv = conv; }
- void set_cairo_context(Cairo::RefPtr<Cairo::Context> cr);
- void redraw();
int width() { return _min_width + _border*2; }
@@ -110,7 +108,12 @@ public:
static const double textpadding;
private:
+#if !WITH_GTKMM_3_0
bool on_expose_event(GdkEventExpose *event);
+#endif
+
+ bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
+
void draw_marks(Cairo::RefPtr<Cairo::Context> cr, double dist, int major_interval);
double _unitconv;
diff --git a/src/widgets/button.cpp b/src/widgets/button.cpp
index 1ac083276..d7be6c9f0 100644
--- a/src/widgets/button.cpp
+++ b/src/widgets/button.cpp
@@ -76,11 +76,11 @@ GType sp_button_get_type(void)
static void
sp_button_class_init (SPButtonClass *klass)
{
- GObjectClass *object_class=(GObjectClass *)klass;
- GtkWidgetClass *widget_class=(GtkWidgetClass *)klass;
- GtkButtonClass *button_class=(GtkButtonClass *)klass;
+ GObjectClass *object_class=G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class=GTK_WIDGET_CLASS(klass);
+ GtkButtonClass *button_class=GTK_BUTTON_CLASS(klass);
- parent_class = (GtkToggleButtonClass *)g_type_class_peek_parent (klass);
+ parent_class = GTK_TOGGLE_BUTTON_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = sp_button_dispose;
#if GTK_CHECK_VERSION(3,0,0)
@@ -123,7 +123,7 @@ static void sp_button_dispose(GObject *object)
button->c_set_active.~connection();
button->c_set_sensitive.~connection();
- ((GObjectClass *) (parent_class))->dispose(object);
+ (G_OBJECT_CLASS(parent_class))->dispose(object);
}
@@ -185,7 +185,7 @@ sp_button_clicked (GtkButton *button)
SPButton *sp_button=SP_BUTTON (button);
if (sp_button->type == SP_BUTTON_TYPE_TOGGLE) {
- ((GtkButtonClass *) (parent_class))->clicked (button);
+ (GTK_BUTTON_CLASS(parent_class))->clicked (button);
}
}
@@ -230,7 +230,7 @@ sp_button_new( Inkscape::IconSize size, SPButtonType type, SPAction *action, SPA
// The Inkscape style is no-relief buttons
gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
- return (GtkWidget *) button;
+ return GTK_WIDGET(button);
}
void
@@ -287,7 +287,7 @@ sp_button_set_action (SPButton *button, SPAction *action)
}
}
- sp_button_set_composed_tooltip ((GtkWidget *) button, action);
+ sp_button_set_composed_tooltip(GTK_WIDGET(button), action);
}
static void
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index b94a70417..a7432c32a 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -303,8 +303,8 @@ sp_desktop_widget_class_init (SPDesktopWidgetClass *klass)
{
dtw_parent_class = SP_VIEW_WIDGET_CLASS(g_type_class_peek_parent(klass));
- GObjectClass *object_class = (GObjectClass *) klass;
- GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
object_class->dispose = sp_desktop_widget_dispose;
@@ -321,8 +321,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
new (&dtw->modified_connection) sigc::connection();
- GtkWidget *widget = GTK_WIDGET (dtw);
-
dtw->window = 0;
dtw->desktop = NULL;
dtw->_interaction_disabled_counter = 0;
@@ -330,7 +328,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
/* Main table */
#if GTK_CHECK_VERSION(3,0,0)
dtw->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_box_set_homogeneous(GTK_BOX(dtw->vbox), FALSE);
#else
dtw->vbox = gtk_vbox_new (FALSE, 0);
#endif
@@ -338,7 +335,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
#if GTK_CHECK_VERSION(3,0,0)
dtw->statusbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_set_homogeneous(GTK_BOX(dtw->statusbar), FALSE);
#else
dtw->statusbar = gtk_hbox_new (FALSE, 0);
#endif
@@ -355,7 +351,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
#if GTK_CHECK_VERSION(3,0,0)
dtw->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_set_homogeneous(GTK_BOX(dtw->hbox), FALSE);
#else
dtw->hbox = gtk_hbox_new(FALSE, 0);
#endif
@@ -381,11 +376,9 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
GtkWidget *eventbox = gtk_event_box_new ();
dtw->hruler = sp_ruler_new(GTK_ORIENTATION_HORIZONTAL);
dtw->hruler_box = eventbox;
- sp_ruler_set_metric(SP_RULER(dtw->hruler), SP_PT);
+ sp_ruler_set_unit(SP_RULER(dtw->hruler), SP_PT);
gtk_widget_set_tooltip_text (dtw->hruler_box, gettext(sp_unit_get_plural (&sp_unit_get_by_id(SP_UNIT_PT))));
gtk_container_add (GTK_CONTAINER (eventbox), dtw->hruler);
- guint xthickness = gtk_widget_get_style(widget)->xthickness;
- guint ythickness = gtk_widget_get_style(widget)->ythickness;
g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_hruler_event), dtw);
g_signal_connect (G_OBJECT (eventbox), "button_release_event", G_CALLBACK (sp_dt_hruler_event), dtw);
g_signal_connect (G_OBJECT (eventbox), "motion_notify_event", G_CALLBACK (sp_dt_hruler_event), dtw);
@@ -394,21 +387,16 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
GtkWidget *tbl = gtk_grid_new();
GtkWidget *canvas_tbl = gtk_grid_new();
- gtk_widget_set_margin_left(eventbox, xthickness);
- gtk_widget_set_margin_right(eventbox, xthickness);
-
- gtk_widget_set_halign(eventbox, GTK_ALIGN_FILL);
- gtk_widget_set_hexpand(eventbox, TRUE);
- gtk_widget_set_valign(eventbox, GTK_ALIGN_START);
-
gtk_grid_attach(GTK_GRID(canvas_tbl), eventbox, 1, 0, 1, 1);
#else
GtkWidget *tbl = gtk_table_new(2, 3, FALSE);
GtkWidget *canvas_tbl = gtk_table_new(3, 3, FALSE);
- gtk_table_attach(GTK_TABLE (canvas_tbl), eventbox, 1, 2, 0, 1,
- GTK_FILL, GTK_FILL,
- xthickness, 0);
+ gtk_table_attach(GTK_TABLE(canvas_tbl),
+ eventbox,
+ 1, 2, 0, 1,
+ GTK_FILL, GTK_FILL,
+ 0, 0);
#endif
gtk_box_pack_start( GTK_BOX(dtw->hbox), tbl, TRUE, TRUE, 1 );
@@ -417,23 +405,18 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
eventbox = gtk_event_box_new ();
dtw->vruler = sp_ruler_new(GTK_ORIENTATION_VERTICAL);
dtw->vruler_box = eventbox;
- sp_ruler_set_metric (SP_RULER (dtw->vruler), SP_PT);
+ sp_ruler_set_unit (SP_RULER (dtw->vruler), SP_PT);
gtk_widget_set_tooltip_text (dtw->vruler_box, gettext(sp_unit_get_plural (&sp_unit_get_by_id(SP_UNIT_PT))));
gtk_container_add (GTK_CONTAINER (eventbox), GTK_WIDGET (dtw->vruler));
#if GTK_CHECK_VERSION(3,0,0)
- gtk_widget_set_margin_top(eventbox, ythickness);
- gtk_widget_set_margin_bottom(eventbox, ythickness);
-
- gtk_widget_set_halign(eventbox, GTK_ALIGN_START);
- gtk_widget_set_valign(eventbox, GTK_ALIGN_FILL);
- gtk_widget_set_vexpand(eventbox, TRUE);
-
gtk_grid_attach(GTK_GRID(canvas_tbl), eventbox, 0, 1, 1, 1);
#else
- gtk_table_attach(GTK_TABLE (canvas_tbl), eventbox, 0, 1, 1, 2,
- GTK_FILL, GTK_FILL,
- 0, ythickness);
+ gtk_table_attach(GTK_TABLE (canvas_tbl),
+ eventbox,
+ 0, 1, 1, 2,
+ GTK_FILL, GTK_FILL,
+ 0, 0);
#endif
g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK (sp_dt_vruler_event), dtw);
@@ -441,15 +424,12 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
g_signal_connect (G_OBJECT (eventbox), "motion_notify_event", G_CALLBACK (sp_dt_vruler_event), dtw);
// Horizontal scrollbar
- dtw->hadj = (GtkAdjustment *) gtk_adjustment_new (0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0);
+ dtw->hadj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0));
#if GTK_CHECK_VERSION(3,0,0)
dtw->hscrollbar = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (dtw->hadj));
- gtk_widget_set_halign(dtw->hscrollbar, GTK_ALIGN_FILL);
- gtk_widget_set_hexpand(dtw->hscrollbar, TRUE);
gtk_grid_attach(GTK_GRID(canvas_tbl), dtw->hscrollbar, 1, 2, 1, 1);
dtw->vscrollbar_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_box_set_homogeneous(GTK_BOX(dtw->vscrollbar_box), FALSE);
#else
dtw->hscrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (dtw->hadj));
gtk_table_attach(GTK_TABLE (canvas_tbl), dtw->hscrollbar, 1, 2, 2, 3,
@@ -469,7 +449,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
g_signal_connect (G_OBJECT (dtw->sticky_zoom), "toggled", G_CALLBACK (sp_dtw_sticky_zoom_toggled), dtw);
// Vertical scrollbar
- dtw->vadj = (GtkAdjustment *) gtk_adjustment_new (0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0);
+ dtw->vadj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, -4000.0, 4000.0, 10.0, 100.0, 4.0));
#if GTK_CHECK_VERSION(3,0,0)
dtw->vscrollbar = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, GTK_ADJUSTMENT(dtw->vadj));
@@ -480,8 +460,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
gtk_box_pack_start (GTK_BOX (dtw->vscrollbar_box), dtw->vscrollbar, TRUE, TRUE, 0);
#if GTK_CHECK_VERSION(3,0,0)
- gtk_widget_set_valign(dtw->vscrollbar, GTK_ALIGN_FILL);
- gtk_widget_set_vexpand(dtw->vscrollbar, TRUE);
gtk_grid_attach(GTK_GRID(canvas_tbl), dtw->vscrollbar_box, 2, 0, 1, 2);
#else
gtk_table_attach(GTK_TABLE(canvas_tbl), dtw->vscrollbar_box, 2, 3, 0, 2,
@@ -561,8 +539,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
g_signal_connect (G_OBJECT (dtw->canvas), "event", G_CALLBACK (sp_desktop_widget_event), dtw);
#if GTK_CHECK_VERSION(3,0,0)
- gtk_widget_set_halign(GTK_WIDGET(dtw->canvas), GTK_ALIGN_FILL);
- gtk_widget_set_valign(GTK_WIDGET(dtw->canvas), GTK_ALIGN_FILL);
gtk_widget_set_hexpand(GTK_WIDGET(dtw->canvas), TRUE);
gtk_widget_set_vexpand(GTK_WIDGET(dtw->canvas), TRUE);
gtk_grid_attach(GTK_GRID(canvas_tbl), GTK_WIDGET(dtw->canvas), 1, 1, 1, 1);
@@ -596,8 +572,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
#if GTK_CHECK_VERSION(3,0,0)
gtk_widget_set_hexpand(GTK_WIDGET(paned->gobj()), TRUE);
gtk_widget_set_vexpand(GTK_WIDGET(paned->gobj()), TRUE);
- gtk_widget_set_halign(GTK_WIDGET(paned->gobj()), GTK_ALIGN_FILL);
- gtk_widget_set_valign(GTK_WIDGET(paned->gobj()), GTK_ALIGN_FILL);
gtk_grid_attach(GTK_GRID(tbl), GTK_WIDGET (paned->gobj()), 1, 1, 1, 1);
#else
gtk_table_attach (GTK_TABLE (tbl), GTK_WIDGET (paned->gobj()), 1, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
@@ -608,8 +582,6 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
#if GTK_CHECK_VERSION(3,0,0)
gtk_widget_set_hexpand(GTK_WIDGET(canvas_tbl), TRUE);
gtk_widget_set_vexpand(GTK_WIDGET(canvas_tbl), TRUE);
- gtk_widget_set_halign(GTK_WIDGET(canvas_tbl), GTK_ALIGN_FILL);
- gtk_widget_set_valign(GTK_WIDGET(canvas_tbl), GTK_ALIGN_FILL);
gtk_grid_attach(GTK_GRID(tbl), GTK_WIDGET (canvas_tbl), 1, 1, 1, 1);
#else
gtk_table_attach (GTK_TABLE (tbl), GTK_WIDGET (canvas_tbl), 1, 2, 1, 2, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL),
@@ -816,7 +788,7 @@ static void sp_desktop_widget_dispose(GObject *object)
void
SPDesktopWidget::updateTitle(gchar const* uri)
{
- Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
+ Gtk::Window *window = static_cast<Gtk::Window*>(g_object_get_data(G_OBJECT(this), "window"));
if (window) {
gchar const *fname = uri;
@@ -1126,7 +1098,7 @@ SPDesktopWidget::shutdown()
switch (response) {
case GTK_RESPONSE_YES:
{
- Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
+ Gtk::Window *window = static_cast<Gtk::Window*>(g_object_get_data(G_OBJECT(this), "window"));
doc->doRef();
sp_namedview_document_from_window(desktop);
@@ -1190,7 +1162,7 @@ SPDesktopWidget::shutdown()
{
doc->doRef();
- Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
+ Gtk::Window *window = static_cast<Gtk::Window*>(g_object_get_data(G_OBJECT(this), "window"));
if (sp_file_save_dialog(*window, doc, Inkscape::Extension::FILE_SAVE_METHOD_INKSCAPE_SVG)) {
doc->doUnref();
@@ -1302,7 +1274,7 @@ SPDesktopWidget::getWindowGeometry (gint &x, gint &y, gint &w, gint &h)
gboolean vis = gtk_widget_get_visible (GTK_WIDGET(this));
(void)vis; // TODO figure out why it is here but not used.
- Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
+ Gtk::Window *window = static_cast<Gtk::Window*>(g_object_get_data(G_OBJECT(this), "window"));
if (window)
{
@@ -1314,7 +1286,7 @@ SPDesktopWidget::getWindowGeometry (gint &x, gint &y, gint &w, gint &h)
void
SPDesktopWidget::setWindowPosition (Geom::Point p)
{
- Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
+ Gtk::Window *window = static_cast<Gtk::Window*>(g_object_get_data(G_OBJECT(this), "window"));
if (window)
{
@@ -1325,7 +1297,7 @@ SPDesktopWidget::setWindowPosition (Geom::Point p)
void
SPDesktopWidget::setWindowSize (gint w, gint h)
{
- Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
+ Gtk::Window *window = static_cast<Gtk::Window*>(g_object_get_data(G_OBJECT(this), "window"));
if (window)
{
@@ -1343,10 +1315,10 @@ SPDesktopWidget::setWindowSize (gint w, gint h)
void
SPDesktopWidget::setWindowTransient (void *p, int transient_policy)
{
- Gtk::Window *window = (Gtk::Window*)g_object_get_data(G_OBJECT(this), "window");
+ Gtk::Window *window = static_cast<Gtk::Window*>(g_object_get_data(G_OBJECT(this), "window"));
if (window)
{
- GtkWindow *w = (GtkWindow *) window->gobj();
+ GtkWindow *w = GTK_WINDOW(window->gobj());
gtk_window_set_transient_for (GTK_WINDOW(p), w);
/*
@@ -1591,7 +1563,7 @@ SPDesktopWidget::setToolboxSelectOneValue (gchar const *id, int value)
{
gpointer hb = sp_search_by_data_recursive(aux_toolbox, (gpointer) id);
if (hb) {
- ege_select_one_action_set_active((EgeSelectOneAction*) hb, value);
+ ege_select_one_action_set_active(EGE_SELECT_ONE_ACTION(hb), value);
}
}
@@ -1724,40 +1696,21 @@ SPDesktopWidget::viewSetPosition (Geom::Point p)
void
sp_desktop_widget_update_rulers (SPDesktopWidget *dtw)
{
- sp_desktop_widget_update_hruler(dtw);
- sp_desktop_widget_update_vruler(dtw);
-}
+ Geom::Rect viewbox = dtw->desktop->get_display_area();
-void
-sp_desktop_widget_update_hruler (SPDesktopWidget *dtw)
-{
- /* The viewbox (in integers) must exactly match the size of SPCanvasbuf's pixel buffer.
- * This is important because the former is being used for drawing the ruler, whereas
- * the latter is used for drawing e.g. the grids and guides. Only when the viewbox
- * coincides with the pixel buffer, everything will line up nicely.
- */
- Geom::IntRect viewbox = dtw->canvas->getViewboxIntegers();
-
- double const scale = dtw->desktop->current_zoom();
- double s = viewbox.min()[Geom::X] / scale - dtw->ruler_origin[Geom::X];
- double e = viewbox.max()[Geom::X] / scale - dtw->ruler_origin[Geom::X];
- sp_ruler_set_range(SP_RULER(dtw->hruler), s, e, (e - s));
-}
-
-void
-sp_desktop_widget_update_vruler (SPDesktopWidget *dtw)
-{
- /* The viewbox (in integers) must exactly match the size of SPCanvasbuf's pixel buffer.
- * This is important because the former is being used for drawing the ruler, whereas
- * the latter is used for drawing e.g. the grids and guides. Only when the viewbox
- * coincides with the pixel buffer, everything will line up nicely.
- */
- Geom::IntRect viewbox = dtw->canvas->getViewboxIntegers();
+ double lower_x = dtw->dt2r * (viewbox.left() - dtw->ruler_origin[Geom::X]);
+ double upper_x = dtw->dt2r * (viewbox.right() - dtw->ruler_origin[Geom::X]);
+ sp_ruler_set_range(SP_RULER(dtw->hruler),
+ lower_x,
+ upper_x,
+ (upper_x - lower_x));
- double const scale = dtw->desktop->current_zoom();
- double s = viewbox.min()[Geom::Y] / -scale - dtw->ruler_origin[Geom::Y];
- double e = viewbox.max()[Geom::Y] / -scale - dtw->ruler_origin[Geom::Y];
- sp_ruler_set_range(SP_RULER(dtw->vruler), s, e, (e - s));
+ double lower_y = dtw->dt2r * (viewbox.bottom() - dtw->ruler_origin[Geom::Y]);
+ double upper_y = dtw->dt2r * (viewbox.top() - dtw->ruler_origin[Geom::Y]);
+ sp_ruler_set_range(SP_RULER(dtw->vruler),
+ lower_y,
+ upper_y,
+ (upper_y - lower_y));
}
@@ -1769,8 +1722,8 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags)
this->dt2r = 1.0 / nv->doc_units->unittobase;
this->ruler_origin = Geom::Point(0,0); //nv->gridorigin; Why was the grid origin used here?
- sp_ruler_set_metric(SP_RULER (this->vruler), nv->getDefaultMetric());
- sp_ruler_set_metric(SP_RULER (this->hruler), nv->getDefaultMetric());
+ sp_ruler_set_unit(SP_RULER (this->vruler), nv->getDefaultMetric());
+ sp_ruler_set_unit(SP_RULER (this->hruler), nv->getDefaultMetric());
/* This loops through all the grandchildren of aux toolbox,
* and for each that it finds, it performs an sp_search_by_data_recursive(),
diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp
index dde511612..b17dcf470 100644
--- a/src/widgets/font-selector.cpp
+++ b/src/widgets/font-selector.cpp
@@ -113,7 +113,7 @@ GType sp_font_selector_get_type()
static void sp_font_selector_class_init(SPFontSelectorClass *c)
{
- GObjectClass *object_class = (GObjectClass *) c;
+ GObjectClass *object_class = G_OBJECT_CLASS(c);
fs_parent_class = (GtkHBoxClass* )g_type_class_peek_parent (c);
@@ -285,7 +285,7 @@ static void sp_font_selector_family_select_row(GtkTreeSelection *selection,
for ( ; list ; list = list->next )
{
gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter, 0, (char*)list->data, -1);
+ gtk_list_store_set (store, &iter, 0, static_cast<char*>(list->data), -1);
}
gtk_tree_view_set_model (GTK_TREE_VIEW (fsel->style_treeview), GTK_TREE_MODEL (store));
@@ -433,7 +433,7 @@ GtkWidget *sp_font_selector_new()
{
SPFontSelector *fsel = SP_FONT_SELECTOR(g_object_new(SP_TYPE_FONT_SELECTOR, NULL));
- return (GtkWidget *) fsel;
+ return GTK_WIDGET(fsel);
}
/*
@@ -453,7 +453,7 @@ unsigned int sp_font_selector_get_best_style (font_instance *font, GList *list)
char *incomingFontString = pango_font_description_to_string(incomingFont);
- tempFont = (font_factory::Default())->FaceFromUIStrings(family.c_str(), (char*)list->data);
+ tempFont = (font_factory::Default())->FaceFromUIStrings(family.c_str(), static_cast<char*>(list->data));
PangoFontDescription *bestMatchForFont = NULL;
if (tempFont) {
@@ -469,7 +469,7 @@ unsigned int sp_font_selector_get_best_style (font_instance *font, GList *list)
while (list) {
currentStyleNumber++;
- tempFont = font_factory::Default()->FaceFromUIStrings(family.c_str(), (char*)list->data);
+ tempFont = font_factory::Default()->FaceFromUIStrings(family.c_str(), static_cast<char*>(list->data));
PangoFontDescription *currentMatchForFont = NULL;
if (tempFont) {
diff --git a/src/widgets/gradient-image.cpp b/src/widgets/gradient-image.cpp
index 359a41167..2d58355db 100644
--- a/src/widgets/gradient-image.cpp
+++ b/src/widgets/gradient-image.cpp
@@ -69,8 +69,8 @@ GType sp_gradient_image_get_type(void)
static void sp_gradient_image_class_init(SPGradientImageClass *klass)
{
- GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
- parent_class = (GtkWidgetClass*)g_type_class_peek_parent (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+ parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent (klass));
#if GTK_CHECK_VERSION(3,0,0)
// GObjectClass *object_class = G_OBJECT_CLASS(klass);
@@ -80,7 +80,7 @@ static void sp_gradient_image_class_init(SPGradientImageClass *klass)
widget_class->draw = sp_gradient_image_draw;
widget_class->destroy = sp_gradient_image_destroy;
#else
- GtkObjectClass *object_class = (GtkObjectClass *) klass;
+ GtkObjectClass *object_class = GTK_OBJECT_CLASS(klass);
object_class->destroy = sp_gradient_image_destroy;
widget_class->size_request = sp_gradient_image_size_request;
@@ -120,8 +120,8 @@ static void sp_gradient_image_destroy(GtkObject *object)
if (parent_class->destroy)
(* (parent_class)->destroy) (object);
#else
- if (((GtkObjectClass *) (parent_class))->destroy)
- (* ((GtkObjectClass *) (parent_class))->destroy) (object);
+ if ((GTK_OBJECT_CLASS(parent_class))->destroy)
+ (* (GTK_OBJECT_CLASS(parent_class))->destroy) (object);
#endif
}
@@ -196,7 +196,7 @@ sp_gradient_image_new (SPGradient *gradient)
sp_gradient_image_set_gradient (image, gradient);
- return (GtkWidget *) image;
+ return GTK_WIDGET(image);
}
GdkPixbuf*
diff --git a/src/widgets/gradient-selector.cpp b/src/widgets/gradient-selector.cpp
index 89a891284..2c6774fe9 100644
--- a/src/widgets/gradient-selector.cpp
+++ b/src/widgets/gradient-selector.cpp
@@ -86,9 +86,9 @@ GType sp_gradient_selector_get_type(void)
static void sp_gradient_selector_class_init(SPGradientSelectorClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
- parent_class = (GtkVBoxClass*)g_type_class_peek_parent (klass);
+ parent_class = GTK_VBOX_CLASS(g_type_class_peek_parent (klass));
signals[GRABBED] = g_signal_new ("grabbed",
G_TYPE_FROM_CLASS(object_class),
@@ -196,7 +196,7 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
gtk_box_pack_start( GTK_BOX(sel), hb, FALSE, FALSE, 0 );
sel->add = gtk_button_new ();
- gtk_button_set_image((GtkButton*)sel->add , gtk_image_new_from_stock ( GTK_STOCK_ADD, GTK_ICON_SIZE_SMALL_TOOLBAR ) );
+ gtk_button_set_image(GTK_BUTTON(sel->add), gtk_image_new_from_stock ( GTK_STOCK_ADD, GTK_ICON_SIZE_SMALL_TOOLBAR ) );
sel->nonsolid.push_back(sel->add);
gtk_box_pack_start (GTK_BOX (hb), sel->add, FALSE, FALSE, 0);
@@ -207,7 +207,7 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
gtk_widget_set_tooltip_text( sel->add, _("Create a duplicate gradient"));
sel->edit = gtk_button_new ();
- gtk_button_set_image((GtkButton*)sel->edit , gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_SMALL_TOOLBAR ) );
+ gtk_button_set_image(GTK_BUTTON(sel->edit), gtk_image_new_from_stock ( GTK_STOCK_EDIT, GTK_ICON_SIZE_SMALL_TOOLBAR ) );
sel->nonsolid.push_back(sel->edit);
gtk_box_pack_start (GTK_BOX (hb), sel->edit, FALSE, FALSE, 0);
@@ -217,7 +217,7 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
gtk_widget_set_tooltip_text( sel->edit, _("Edit gradient"));
sel->del = gtk_button_new ();
- gtk_button_set_image((GtkButton*)sel->del , gtk_image_new_from_stock ( GTK_STOCK_REMOVE, GTK_ICON_SIZE_SMALL_TOOLBAR ) );
+ gtk_button_set_image(GTK_BUTTON(sel->del), gtk_image_new_from_stock ( GTK_STOCK_REMOVE, GTK_ICON_SIZE_SMALL_TOOLBAR ) );
sel->swatch_widgets.push_back(sel->del);
gtk_box_pack_start (GTK_BOX (hb), sel->del, FALSE, FALSE, 0);
@@ -251,8 +251,8 @@ static void sp_gradient_selector_dispose(GObject *object)
sel->text_renderer = NULL;
}
- if (((GObjectClass *) (parent_class))->dispose) {
- (* ((GObjectClass *) (parent_class))->dispose) (object);
+ if ((G_OBJECT_CLASS(parent_class))->dispose) {
+ (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
}
}
@@ -267,7 +267,7 @@ GtkWidget *sp_gradient_selector_new()
{
SPGradientSelector *sel = SP_GRADIENT_SELECTOR(g_object_new (SP_TYPE_GRADIENT_SELECTOR, NULL));
- return (GtkWidget *) sel;
+ return GTK_WIDGET(sel);
}
void SPGradientSelector::setMode(SelectorMode mode)
diff --git a/src/widgets/gradient-vector.cpp b/src/widgets/gradient-vector.cpp
index 51013a2cd..3a95b552a 100644
--- a/src/widgets/gradient-vector.cpp
+++ b/src/widgets/gradient-vector.cpp
@@ -609,7 +609,7 @@ static void update_stop_list( GtkWidget *vb, SPGradient *gradient, SPStop *new_s
if (!combo_box) {
return;
}
- GtkListStore *store = (GtkListStore *)gtk_combo_box_get_model (GTK_COMBO_BOX(combo_box));
+ GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo_box)));
if (!store) {
return;
}
@@ -720,7 +720,7 @@ static SPStop *get_selected_stop( GtkWidget *vb)
if (combo_box) {
GtkTreeIter iter;
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX(combo_box), &iter)) {
- GtkListStore *store = (GtkListStore *)gtk_combo_box_get_model (GTK_COMBO_BOX(combo_box));
+ GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo_box)));
gtk_tree_model_get (GTK_TREE_MODEL(store), &iter, 2, &stop, -1);
}
}
@@ -931,7 +931,7 @@ static GtkWidget * sp_gradient_vector_widget_new(SPGradient *gradient, SPStop *s
/* Adjustment */
GtkAdjustment *Offset_adj = NULL;
- Offset_adj= (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 1.0, 0.01, 0.01, 0.0);
+ Offset_adj= GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 1.0, 0.01, 0.01, 0.0));
g_object_set_data(G_OBJECT(vb), "offset", Offset_adj);
SPStop *stop = get_selected_stop(vb);
@@ -1197,10 +1197,10 @@ static void sp_gradient_vector_widget_destroy(GtkWidget *object, gpointer /*data
static void sp_gradient_vector_widget_destroy(GtkObject *object, gpointer /*data*/)
#endif
{
- SPObject *gradient = reinterpret_cast<SPObject*>(g_object_get_data(G_OBJECT(object), "gradient"));
+ SPObject *gradient = SP_OBJECT(g_object_get_data(G_OBJECT(object), "gradient"));
- sigc::connection *release_connection = (sigc::connection *)g_object_get_data(G_OBJECT(object), "gradient_release_connection");
- sigc::connection *modified_connection = (sigc::connection *)g_object_get_data(G_OBJECT(object), "gradient_modified_connection");
+ sigc::connection *release_connection = static_cast<sigc::connection *>(g_object_get_data(G_OBJECT(object), "gradient_release_connection"));
+ sigc::connection *modified_connection = static_cast<sigc::connection *>(g_object_get_data(G_OBJECT(object), "gradient_modified_connection"));
if (gradient) {
g_assert( release_connection != NULL );
@@ -1316,7 +1316,7 @@ static void sp_gradient_vector_color_changed(SPColorSelector *csel, GObject *obj
if (combo_box) {
GtkTreeIter iter;
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX(combo_box), &iter)) {
- GtkListStore *store = (GtkListStore *)gtk_combo_box_get_model (GTK_COMBO_BOX(combo_box));
+ GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo_box)));
Inkscape::UI::Widget::ColorPreview *cp = Gtk::manage(new Inkscape::UI::Widget::ColorPreview(sp_stop_get_rgba32(stop)));
GdkPixbuf *pb = cp->toPixbuf(64, 16);
diff --git a/src/widgets/icon.cpp b/src/widgets/icon.cpp
index d3b7e2dbb..ff443504d 100644
--- a/src/widgets/icon.cpp
+++ b/src/widgets/icon.cpp
@@ -164,13 +164,10 @@ GType SPIcon::getType()
void IconImpl::classInit(SPIconClass *klass)
{
- GObjectClass *object_class;
- GtkWidgetClass *widget_class;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
- object_class = (GObjectClass *) klass;
- widget_class = (GtkWidgetClass *) klass;
-
- parent_class = (GtkWidgetClass*)g_type_class_peek_parent(klass);
+ parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent(klass));
object_class->dispose = IconImpl::dispose;
@@ -205,7 +202,7 @@ void IconImpl::dispose(GObject *object)
icon->name = 0;
}
- ((GObjectClass *) (parent_class))->dispose(object);
+ (G_OBJECT_CLASS(parent_class))->dispose(object);
}
void IconImpl::reset( SPIcon *icon )
@@ -865,7 +862,7 @@ GtkWidget *IconImpl::newFull( Inkscape::IconSize lsize, gchar const *name )
if ( dump ) {
g_message( "skipped gtk '%s' %d (not GTK_IMAGE_STOCK)", name, lsize );
}
- //g_object_unref( (GObject *)img );
+ //g_object_unref(G_OBJECT(img));
img = 0;
}
}
@@ -1022,7 +1019,7 @@ int IconImpl::getPhysSize(int size)
"inkscape-decoration"
};
- GtkWidget *icon = (GtkWidget *)g_object_new(SP_TYPE_ICON, NULL);
+ GtkWidget *icon = GTK_WIDGET(g_object_new(SP_TYPE_ICON, NULL));
for (unsigned i = 0; i < G_N_ELEMENTS(gtkSizes); ++i) {
guint const val_ix = (gtkSizes[i] <= GTK_ICON_SIZE_DIALOG) ? (guint)gtkSizes[i] : (guint)Inkscape::ICON_SIZE_DECORATION;
@@ -1075,7 +1072,7 @@ int IconImpl::getPhysSize(int size)
GdkPixbuf *IconImpl::loadPixmap(gchar const *name, unsigned /*lsize*/, unsigned psize)
{
- gchar *path = (gchar *) g_strdup_printf("%s/%s.png", INKSCAPE_PIXMAPDIR, name);
+ gchar *path = g_strdup_printf("%s/%s.png", INKSCAPE_PIXMAPDIR, name);
// TODO: bulia, please look over
gsize bytesRead = 0;
gsize bytesWritten = 0;
@@ -1089,7 +1086,7 @@ GdkPixbuf *IconImpl::loadPixmap(gchar const *name, unsigned /*lsize*/, unsigned
g_free(localFilename);
g_free(path);
if (!pb) {
- path = (gchar *) g_strdup_printf("%s/%s.xpm", INKSCAPE_PIXMAPDIR, name);
+ path = g_strdup_printf("%s/%s.xpm", INKSCAPE_PIXMAPDIR, name);
// TODO: bulia, please look over
gsize bytesRead = 0;
gsize bytesWritten = 0;
diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp
index 5a6e774f5..b0738b6a6 100644
--- a/src/widgets/paint-selector.cpp
+++ b/src/widgets/paint-selector.cpp
@@ -157,9 +157,9 @@ GType sp_paint_selector_get_type(void)
static void
sp_paint_selector_class_init(SPPaintSelectorClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
- parent_class = (GtkVBoxClass*)g_type_class_peek_parent(klass);
+ parent_class = GTK_VBOX_CLASS(g_type_class_peek_parent(klass));
psel_signals[MODE_CHANGED] = g_signal_new("mode_changed",
G_TYPE_FROM_CLASS(object_class),
@@ -311,8 +311,8 @@ static void sp_paint_selector_dispose(GObject *object)
// clean up our long-living pattern menu
g_object_set_data(G_OBJECT(psel),"patternmenu",NULL);
- if (((GObjectClass *) parent_class)->dispose)
- (* ((GObjectClass *) parent_class)->dispose)(object);
+ if ((G_OBJECT_CLASS(parent_class))->dispose)
+ (* (G_OBJECT_CLASS(parent_class))->dispose)(object);
}
static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel,
@@ -655,7 +655,7 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec
if ((psel->mode == SPPaintSelector::MODE_COLOR_RGB) || (psel->mode == SPPaintSelector::MODE_COLOR_CMYK)) {
/* Already have color selector */
- csel = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "color-selector");
+ csel = GTK_WIDGET(g_object_get_data(G_OBJECT(psel->selector), "color-selector"));
} else {
sp_paint_selector_clear_frame(psel);
@@ -732,7 +732,7 @@ static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSe
if ((psel->mode == SPPaintSelector::MODE_GRADIENT_LINEAR) || (psel->mode == SPPaintSelector::MODE_GRADIENT_RADIAL)) {
/* Already have gradient selector */
- gsel = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "gradient-selector");
+ gsel = GTK_WIDGET(g_object_get_data(G_OBJECT(psel->selector), "gradient-selector"));
} else {
sp_paint_selector_clear_frame(psel);
/* Create new gradient selector */
@@ -799,7 +799,7 @@ ink_pattern_list_get (SPDocument *source)
GSList *pl = NULL;
GSList const *patterns = source->getResourceList("pattern");
- for (GSList *l = (GSList *) patterns; l != NULL; l = l->next) {
+ for (GSList *l = const_cast<GSList *>(patterns); l != NULL; l = l->next) {
if (SP_PATTERN(l->data) == pattern_getroot(SP_PATTERN(l->data))) { // only if this is a root pattern
pl = g_slist_prepend(pl, l->data);
}
@@ -995,7 +995,7 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel
if (psel->mode == SPPaintSelector::MODE_PATTERN) {
/* Already have pattern menu */
- tbl = (GtkWidget*)g_object_get_data(G_OBJECT(psel->selector), "pattern-selector");
+ tbl = GTK_WIDGET(g_object_get_data(G_OBJECT(psel->selector), "pattern-selector"));
} else {
sp_paint_selector_clear_frame(psel);
@@ -1081,7 +1081,7 @@ SPPattern *SPPaintSelector::getPattern()
SPPattern *pat = 0;
g_return_val_if_fail((mode == MODE_PATTERN) , NULL);
- GtkWidget *combo = (GtkWidget *) g_object_get_data(G_OBJECT(this), "patternmenu");
+ GtkWidget *combo = GTK_WIDGET(g_object_get_data(G_OBJECT(this), "patternmenu"));
/* no pattern menu if we were just selected */
if ( combo == NULL ) {
diff --git a/src/widgets/pencil-toolbar.cpp b/src/widgets/pencil-toolbar.cpp
index 7e28f7c8c..85dea51aa 100644
--- a/src/widgets/pencil-toolbar.cpp
+++ b/src/widgets/pencil-toolbar.cpp
@@ -249,7 +249,7 @@ static void sp_pencil_tb_defaults(GtkWidget * /*widget*/, GObject *obj)
// fixme: make settable
gdouble tolerance = 4;
- adj = (GtkAdjustment*)g_object_get_data(obj, "tolerance");
+ adj = GTK_ADJUSTMENT(g_object_get_data(obj, "tolerance"));
gtk_adjustment_set_value(adj, tolerance);
gtk_adjustment_value_changed(adj);
@@ -289,7 +289,7 @@ public:
}
g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE) );
- GtkAdjustment * adj = (GtkAdjustment*)g_object_get_data(tbl, "tolerance");
+ GtkAdjustment * adj = GTK_ADJUSTMENT(g_object_get_data(tbl, "tolerance"));
double v = val.getDouble(adj->value);
gtk_adjustment_set_value(adj, v);
diff --git a/src/widgets/ruler.cpp b/src/widgets/ruler.cpp
index 77332067e..c1f9be2a5 100644
--- a/src/widgets/ruler.cpp
+++ b/src/widgets/ruler.cpp
@@ -1,5 +1,18 @@
/*
- * Customized ruler class for inkscape
+ * Customized ruler class for inkscape. Note that this is a fork of
+ * the GimpRuler widget from GIMP: libgimpwidgets/gimpruler.c.
+ * The GIMP code is released under the GPL 3. The GIMP code itself
+ * is a fork of the now-obsolete GtkRuler widget from GTK+ 2.
+ *
+ * Major differences between implementations in Inkscape and GIMP are
+ * as follows:
+ * - We use a 1,2,4,8... scale for inches and 1,2,5,10... for everything
+ * else. GIMP uses 1,2,5,10... for everything.
+ *
+ * - We use a default font size of PANGO_SCALE_X_SMALL for labels,
+ * GIMP uses PANGO_SCALE_SMALL (i.e., a bit larger than ours).
+ *
+ * - We abbreviate large numbers in tick-labels (e.g., 10000 -> 10k)
*
* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
@@ -7,6 +20,7 @@
* bulia byak <buliabyak@users.sf.net>
* Diederik van Lierop <mail@diedenrezi.nl>
* Jon A. Cruz <jon@joncruz.org>
+ * Alex Valavanis <valavanisalex@gmail.com>
*
* Copyright (C) 1999-2011 authors
*
@@ -18,21 +32,37 @@
#include <cstdio>
#include "widget-sizes.h"
-#include "desktop-widget.h"
#include "ruler.h"
#include "unit-constants.h"
#include "round.h"
#include <glibmm/i18n.h>
+#define ROUND(x) ((int) ((x) + 0.5))
+
#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-#define MINIMUM_INCR 5
+#define DEFAULT_RULER_FONT_SCALE PANGO_SCALE_X_SMALL
+#define MINIMUM_INCR 5
-#define ROUND(x) ((int) ((x) + 0.5))
-struct _SPRulerPrivate
+enum {
+ PROP_0,
+ PROP_ORIENTATION,
+ PROP_UNIT,
+ PROP_LOWER,
+ PROP_UPPER,
+ PROP_POSITION,
+ PROP_MAX_SIZE
+};
+
+
+/* All distances below are in 1/72nd's of an inch. (According to
+ * Adobe, that's a point, but points are really 1/72.27 in.)
+ */
+typedef struct
{
GtkOrientation orientation;
+ SPMetric unit;
gdouble lower;
gdouble upper;
gdouble position;
@@ -40,83 +70,90 @@ struct _SPRulerPrivate
GdkWindow *input_window;
cairo_surface_t *backing_store;
+ PangoLayout *layout;
+ gdouble font_scale;
- SPRulerMetric *metric;
-
- gint slider_size;
gint xsrc;
gint ysrc;
+
+ GList *track_widgets;
+} SPRulerPrivate;
+
+#define SP_RULER_GET_PRIVATE(ruler) \
+ G_TYPE_INSTANCE_GET_PRIVATE (ruler, SP_TYPE_RULER, SPRulerPrivate)
+
+
+struct SPRulerMetric
+{
+ gdouble ruler_scale[16];
+ gint subdivide[5];
};
-enum {
- PROP_0,
- PROP_ORIENTATION,
- PROP_LOWER,
- PROP_UPPER,
- PROP_POSITION,
- PROP_MAX_SIZE,
- PROP_METRIC
+// Ruler metric for general use.
+static SPRulerMetric const ruler_metric_general = {
+ { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000, 25000, 50000, 100000 },
+ { 1, 5, 10, 50, 100 }
};
-static void sp_ruler_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void sp_ruler_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-static void sp_ruler_realize (GtkWidget *widget);
-static void sp_ruler_unrealize (GtkWidget *widget);
-static void sp_ruler_map (GtkWidget *widget);
-static void sp_ruler_unmap (GtkWidget *widget);
-static void sp_ruler_size_request (GtkWidget *widget,
- GtkRequisition *requisition);
+// Ruler metric for inch scales.
+static SPRulerMetric const ruler_metric_inches = {
+ { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 },
+ { 1, 2, 4, 8, 16 }
+};
-#if GTK_CHECK_VERSION(3,0,0)
-static void sp_ruler_get_preferred_width (GtkWidget *widget,
- gint *minimal_width,
- gint *natural_width);
+static void sp_ruler_dispose (GObject *object);
+static void sp_ruler_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void sp_ruler_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+
+static void sp_ruler_realize (GtkWidget *widget);
+static void sp_ruler_unrealize (GtkWidget *widget);
+static void sp_ruler_map (GtkWidget *widget);
+static void sp_ruler_unmap (GtkWidget *widget);
+static void sp_ruler_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
-static void sp_ruler_get_preferred_height (GtkWidget *widget,
- gint *minimal_height,
- gint *natural_height);
+#if GTK_CHECK_VERSION(3,0,0)
+static void sp_ruler_get_preferred_width (GtkWidget *widget,
+ gint *minimum_width,
+ gint *natural_width);
+
+static void sp_ruler_get_preferred_height (GtkWidget *widget,
+ gint *minimum_height,
+ gint *natural_height);
+static void sp_ruler_style_updated (GtkWidget *widget);
+#else
+static void sp_ruler_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void sp_ruler_style_set (GtkWidget *widget,
+ GtkStyle *prev_style);
#endif
-static void sp_ruler_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation);
-static gboolean sp_ruler_motion_notify (GtkWidget *widget,
- GdkEventMotion *event);
-static gboolean sp_ruler_draw (GtkWidget *widget,
- cairo_t *cr);
+static gboolean sp_ruler_motion_notify (GtkWidget *widget,
+ GdkEventMotion *event);
+static gboolean sp_ruler_draw (GtkWidget *widget,
+ cairo_t *cr);
#if !GTK_CHECK_VERSION(3,0,0)
-static gboolean sp_ruler_expose (GtkWidget *widget,
- GdkEventExpose *event);
+static gboolean sp_ruler_expose (GtkWidget *widget,
+ GdkEventExpose *event);
#endif
-static void sp_ruler_draw_ticks (SPRuler *ruler);
-static void sp_ruler_draw_pos (SPRuler *ruler);
-static void sp_ruler_make_pixmap (SPRuler *ruler);
-
-#define SP_RULER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), SP_TYPE_RULER, SPRulerPrivate))
-
-// Note: const casts are due to SPRuler being const-broken and not scheduled for any more fixes.
-/// Ruler metrics.
-static SPRulerMetric const sp_ruler_metrics[] = {
- // NOTE: the order of records in this struct must correspond to the SPMetric enum.
- {const_cast<gchar*>("NONE"), const_cast<gchar*>(""), 1, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {const_cast<gchar*>("millimeters"), const_cast<gchar*>("mm"), PX_PER_MM, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {const_cast<gchar*>("centimeters"), const_cast<gchar*>("cm"), PX_PER_CM, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {const_cast<gchar*>("inches"), const_cast<gchar*>("in"), PX_PER_IN, { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 }, { 1, 2, 4, 8, 16 }},
- {const_cast<gchar*>("feet"), const_cast<gchar*>("ft"), PX_PER_FT, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {const_cast<gchar*>("points"), const_cast<gchar*>("pt"), PX_PER_PT, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {const_cast<gchar*>("picas"), const_cast<gchar*>("pc"), PX_PER_PC, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {const_cast<gchar*>("pixels"), const_cast<gchar*>("px"), PX_PER_PX, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
- {const_cast<gchar*>("meters"), const_cast<gchar*>("m"), PX_PER_M, { 1, 2, 5, 10, 25, 50, 100, 250, 500, 1000 }, { 1, 5, 10, 50, 100 }},
-};
+static void sp_ruler_draw_ticks (SPRuler *ruler);
+static void sp_ruler_draw_pos (SPRuler *ruler);
+static void sp_ruler_make_pixmap (SPRuler *ruler);
+
+static PangoLayout * sp_ruler_get_layout (GtkWidget *widget,
+ const gchar *text);
+
+
+G_DEFINE_TYPE (SPRuler, sp_ruler, GTK_TYPE_WIDGET)
+
+#define parent_class sp_ruler_parent_class
-G_DEFINE_TYPE_WITH_CODE (SPRuler, sp_ruler, GTK_TYPE_WIDGET,
- G_IMPLEMENT_INTERFACE (GTK_TYPE_ORIENTABLE,
- NULL))
static void
sp_ruler_class_init (SPRulerClass *klass)
@@ -124,6 +161,7 @@ sp_ruler_class_init (SPRulerClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ object_class->dispose = sp_ruler_dispose;
object_class->set_property = sp_ruler_set_property;
object_class->get_property = sp_ruler_get_property;
@@ -135,19 +173,36 @@ sp_ruler_class_init (SPRulerClass *klass)
#if GTK_CHECK_VERSION(3,0,0)
widget_class->get_preferred_width = sp_ruler_get_preferred_width;
widget_class->get_preferred_height = sp_ruler_get_preferred_height;
+ widget_class->style_updated = sp_ruler_style_updated;
widget_class->draw = sp_ruler_draw;
#else
widget_class->size_request = sp_ruler_size_request;
+ widget_class->style_set = sp_ruler_style_set;
widget_class->expose_event = sp_ruler_expose;
#endif
widget_class->motion_notify_event = sp_ruler_motion_notify;
g_type_class_add_private (object_class, sizeof (SPRulerPrivate));
- g_object_class_override_property (object_class,
- PROP_ORIENTATION,
- "orientation");
-
+ g_object_class_install_property (object_class,
+ PROP_ORIENTATION,
+ g_param_spec_enum ("orientation",
+ _("Orientation"),
+ _("The orientation of the ruler"),
+ GTK_TYPE_ORIENTATION,
+ GTK_ORIENTATION_HORIZONTAL,
+ static_cast<GParamFlags>(GTK_PARAM_READWRITE)));
+
+ /* FIXME: Should probably use g_param_spec_enum */
+ g_object_class_install_property (object_class,
+ PROP_UNIT,
+ g_param_spec_uint ("unit",
+ _("Unit"),
+ _("Unit of the ruler"),
+ 0, 8,
+ SP_PX,
+ static_cast<GParamFlags>(GTK_PARAM_READWRITE)));
+
g_object_class_install_property (object_class,
PROP_LOWER,
g_param_spec_double ("lower",
@@ -187,21 +242,14 @@ sp_ruler_class_init (SPRulerClass *klass)
G_MAXDOUBLE,
0.0,
static_cast<GParamFlags>(GTK_PARAM_READWRITE)));
- /**
- * SPRuler:metric:
- *
- * The metric used for the ruler.
- *
- * TODO: This should probably use g_param_spec_enum
- */
- g_object_class_install_property (object_class,
- PROP_METRIC,
- g_param_spec_uint("metric",
- _("Metric"),
- _("The metric used for the ruler"),
- 0, 8,
- SP_PX,
- static_cast<GParamFlags>(GTK_PARAM_READWRITE)));
+
+ gtk_widget_class_install_style_property (widget_class,
+ g_param_spec_double ("font-scale",
+ NULL, NULL,
+ 0.0,
+ G_MAXDOUBLE,
+ DEFAULT_RULER_FONT_SCALE,
+ G_PARAM_READABLE));
}
static void
@@ -212,16 +260,39 @@ sp_ruler_init (SPRuler *ruler)
gtk_widget_set_has_window (GTK_WIDGET (ruler), FALSE);
priv->orientation = GTK_ORIENTATION_HORIZONTAL;
- priv->xsrc = 0;
- priv->ysrc = 0;
- priv->slider_size = 0;
+ priv->unit = SP_PX;
priv->lower = 0;
priv->upper = 0;
priv->position = 0;
priv->max_size = 0;
priv->backing_store = NULL;
+ priv->font_scale = DEFAULT_RULER_FONT_SCALE;
- sp_ruler_set_metric(ruler, SP_PX);
+#if GTK_CHECK_VERSION(3,0,0)
+ const gchar *str =
+ "SPRuler {\n"
+ " background-color: @bg_color;\n"
+ "}\n";
+
+ GtkCssProvider *css = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (css, str, -1, NULL);
+ gtk_style_context_add_provider (gtk_widget_get_style_context (GTK_WIDGET (ruler)),
+ GTK_STYLE_PROVIDER (css),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ g_object_unref (css);
+#endif
+}
+
+static void
+sp_ruler_dispose (GObject *object)
+{
+ SPRuler *ruler = SP_RULER (object);
+ SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
+
+ while (priv->track_widgets)
+ sp_ruler_remove_track_widget (ruler, GTK_WIDGET(priv->track_widgets->data));
+
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
@@ -314,6 +385,11 @@ sp_ruler_set_property (GObject *object,
priv->orientation = static_cast<GtkOrientation>(g_value_get_enum (value));
gtk_widget_queue_resize (GTK_WIDGET (ruler));
break;
+
+ case PROP_UNIT:
+ sp_ruler_set_unit (ruler, static_cast<SPMetric>(g_value_get_int (value)));
+ break;
+
case PROP_LOWER:
sp_ruler_set_range (ruler,
g_value_get_double (value),
@@ -326,18 +402,18 @@ sp_ruler_set_property (GObject *object,
g_value_get_double (value),
priv->max_size);
break;
+
case PROP_POSITION:
sp_ruler_set_position (ruler, g_value_get_double (value));
break;
+
case PROP_MAX_SIZE:
sp_ruler_set_range (ruler,
priv->lower,
priv->upper,
g_value_get_double (value));
break;
- case PROP_METRIC:
- sp_ruler_set_metric (ruler, static_cast<SPMetric>(g_value_get_enum (value)));
- break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -358,6 +434,10 @@ sp_ruler_get_property (GObject *object,
case PROP_ORIENTATION:
g_value_set_enum (value, priv->orientation);
break;
+
+ case PROP_UNIT:
+ g_value_set_int (value, priv->unit);
+ break;
case PROP_LOWER:
g_value_set_double (value, priv->lower);
break;
@@ -370,41 +450,12 @@ sp_ruler_get_property (GObject *object,
case PROP_MAX_SIZE:
g_value_set_double (value, priv->max_size);
break;
- case PROP_METRIC:
- g_value_set_enum(value, sp_ruler_get_metric(ruler));
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
-
-/**
- * sp_ruler_get_metric:
- * @ruler: a #SPRuler
- *
- * Gets the units used for a #SPRuler. See sp_ruler_set_metric().
- *
- * Return value: the units currently used for @ruler
- **/
-SPMetric sp_ruler_get_metric(SPRuler *ruler)
-{
- g_return_val_if_fail(SP_IS_RULER(ruler), static_cast<SPMetric>(0));
- SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
-
- for (size_t i = 0; i < G_N_ELEMENTS(sp_ruler_metrics); i++) {
- if (priv->metric == &sp_ruler_metrics[i]) {
- return static_cast<SPMetric>(i);
- }
- }
-
- g_assert_not_reached ();
-
- return static_cast<SPMetric>(0);
-}
-
-
static void
sp_ruler_realize (GtkWidget *widget)
{
@@ -455,6 +506,12 @@ sp_ruler_unrealize(GtkWidget *widget)
cairo_surface_destroy (priv->backing_store);
priv->backing_store = NULL;
}
+
+ if (priv->layout)
+ {
+ g_object_unref (priv->layout);
+ priv->layout = NULL;
+ }
if (priv->input_window)
{
@@ -487,10 +544,46 @@ sp_ruler_unmap (GtkWidget *widget)
GTK_WIDGET_CLASS (sp_ruler_parent_class)->unmap (widget);
}
-static void sp_ruler_size_request(GtkWidget *widget,
- GtkRequisition *requisition)
+static void
+sp_ruler_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ SPRuler *ruler = SP_RULER(widget);
+ SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
+ GtkAllocation widget_allocation;
+ gboolean resized;
+
+ gtk_widget_get_allocation (widget, &widget_allocation);
+
+ resized = (widget_allocation.width != allocation->width ||
+ widget_allocation.height != allocation->height);
+
+ gtk_widget_set_allocation(widget, allocation);
+
+ if (gtk_widget_get_realized (widget))
+ {
+ gdk_window_move_resize (priv->input_window,
+ allocation->x, allocation->y,
+ allocation->width, allocation->height);
+
+ if (resized)
+ sp_ruler_make_pixmap (ruler);
+ }
+}
+
+static void
+sp_ruler_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
{
SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (widget);
+ PangoLayout *layout;
+ PangoRectangle ink_rect;
+ gint size;
+
+ layout = sp_ruler_get_layout (widget, "0123456789");
+ pango_layout_get_pixel_extents (layout, &ink_rect, NULL);
+
+ size = 2 + ink_rect.height * 1.7;
#if GTK_CHECK_VERSION(3,0,0)
GtkStyleContext *context = gtk_widget_get_style_context (widget);
@@ -508,63 +601,79 @@ static void sp_ruler_size_request(GtkWidget *widget,
{
#if GTK_CHECK_VERSION(3,0,0)
requisition->width += 1;
- requisition->height += RULER_WIDTH;
+ requisition->height += size;
#else
requisition->width = style->xthickness * 2 + 1;
- requisition->height = style->ythickness * 2 + RULER_WIDTH;
+ requisition->height = style->ythickness * 2 + size;
#endif
}
else
{
#if GTK_CHECK_VERSION(3,0,0)
- requisition->width += RULER_WIDTH;
+ requisition->width += size;
requisition->height += 1;
#else
- requisition->width = style->xthickness * 2 + RULER_WIDTH;
+ requisition->width = style->xthickness * 2 + size;
requisition->height = style->ythickness * 2 + 1;
#endif
}
}
+static void
#if GTK_CHECK_VERSION(3,0,0)
-static void sp_ruler_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
+sp_ruler_style_updated (GtkWidget *widget)
+#else
+sp_ruler_style_set (GtkWidget *widget,
+ GtkStyle *prev_style)
+#endif
{
- GtkRequisition requisition;
- sp_ruler_size_request(widget, &requisition);
- *minimal_width = *natural_width = requisition.width;
-}
+ SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (widget);
-static void sp_ruler_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
-{
- GtkRequisition requisition;
- sp_ruler_size_request(widget, &requisition);
- *minimal_height = *natural_height = requisition.height;
-}
+#if GTK_CHECK_VERSION(3,0,0)
+ GTK_WIDGET_CLASS (sp_ruler_parent_class)->style_updated (widget);
+#else
+ GTK_WIDGET_CLASS (sp_ruler_parent_class)->style_set (widget, prev_style);
#endif
-static void
-sp_ruler_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- SPRuler *ruler = SP_RULER(widget);
- SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
-
- gtk_widget_set_allocation(widget, allocation);
+ gtk_widget_style_get (widget,
+ "font-scale", &priv->font_scale,
+ NULL);
- if (gtk_widget_get_realized (widget))
+ if (priv->layout)
{
- gdk_window_move_resize (priv->input_window,
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
- sp_ruler_make_pixmap (ruler);
+ g_object_unref (priv->layout);
+ priv->layout = NULL;
}
}
+#if GTK_CHECK_VERSION(3,0,0)
+static void
+sp_ruler_get_preferred_width (GtkWidget *widget,
+ gint *minimum_width,
+ gint *natural_width)
+{
+ GtkRequisition requisition;
-#if !GTK_CHECK_VERSION(3,0,0)
-static gboolean sp_ruler_expose(GtkWidget *widget,
- GdkEventExpose *event)
+ sp_ruler_size_request (widget, &requisition);
+
+ *minimum_width = *natural_width = requisition.width;
+}
+
+static void
+sp_ruler_get_preferred_height (GtkWidget *widget,
+ gint *minimum_height,
+ gint *natural_height)
+{
+ GtkRequisition requisition;
+
+ sp_ruler_size_request(widget, &requisition);
+
+ *minimum_height = *natural_height = requisition.height;
+}
+#else
+static gboolean
+sp_ruler_expose (GtkWidget *widget,
+ GdkEventExpose *event)
{
cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(widget));
GtkAllocation allocation;
@@ -583,10 +692,9 @@ static gboolean sp_ruler_expose(GtkWidget *widget,
}
#endif
-
-
-static gboolean sp_ruler_draw(GtkWidget *widget,
- cairo_t *cr)
+static gboolean
+sp_ruler_draw (GtkWidget *widget,
+ cairo_t *cr)
{
SPRuler *ruler = SP_RULER (widget);
SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
@@ -601,7 +709,6 @@ static gboolean sp_ruler_draw(GtkWidget *widget,
return FALSE;
}
-
static void
sp_ruler_make_pixmap (SPRuler *ruler)
{
@@ -621,7 +728,6 @@ sp_ruler_make_pixmap (SPRuler *ruler)
allocation.height);
}
-
static void
sp_ruler_draw_pos (SPRuler *ruler)
{
@@ -765,16 +871,234 @@ sp_ruler_draw_pos (SPRuler *ruler)
}
}
+/**
+ * sp_ruler_new:
+ * @orientation: the ruler's orientation
+ *
+ * Creates a new ruler.
+ *
+ * Return value: a new #SPRuler widget.
+ */
+GtkWidget *
+sp_ruler_new (GtkOrientation orientation)
+{
+ return GTK_WIDGET (g_object_new (SP_TYPE_RULER,
+ "orientation", orientation,
+ NULL));
+}
+
+static void
+sp_ruler_update_position (SPRuler *ruler,
+ gdouble x,
+ gdouble y)
+{
+ SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
+ GtkAllocation allocation;
+ gdouble lower;
+ gdouble upper;
+
+ gtk_widget_get_allocation (GTK_WIDGET (ruler), &allocation);
+ sp_ruler_get_range (ruler, &lower, &upper, NULL);
+
+ if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
+ {
+ sp_ruler_set_position (ruler,
+ lower +
+ (upper - lower) * x / allocation.width);
+ }
+ else
+ {
+ sp_ruler_set_position (ruler,
+ lower +
+ (upper - lower) * y / allocation.height);
+ }
+}
+
+/* Returns TRUE if a translation should be done */
+static gboolean
+gtk_widget_get_translation_to_window (GtkWidget *widget,
+ GdkWindow *window,
+ int *x,
+ int *y)
+{
+ GdkWindow *w, *widget_window;
+
+ if (! gtk_widget_get_has_window (widget))
+ {
+ GtkAllocation allocation;
+
+ gtk_widget_get_allocation (widget, &allocation);
+
+ *x = -allocation.x;
+ *y = -allocation.y;
+ }
+ else
+ {
+ *x = 0;
+ *y = 0;
+ }
+
+ widget_window = gtk_widget_get_window (widget);
+
+ for (w = window;
+ w && w != widget_window;
+ w = gdk_window_get_effective_parent (w))
+ {
+ gdouble px, py;
+
+ gdk_window_coords_to_parent (w, *x, *y, &px, &py);
+
+ *x += px;
+ *y += px;
+ }
+
+ if (w == NULL)
+ {
+ *x = 0;
+ *y = 0;
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+sp_ruler_event_to_widget_coords (GtkWidget *widget,
+ GdkWindow *window,
+ gdouble event_x,
+ gdouble event_y,
+ gint *widget_x,
+ gint *widget_y)
+{
+ gint tx, ty;
-#define UNUSED_PIXELS 2 // There appear to be two pixels that are not being used at each end of the ruler
+ if (gtk_widget_get_translation_to_window (widget, window, &tx, &ty))
+ {
+ event_x += tx;
+ event_y += ty;
+ }
-GtkWidget* sp_ruler_new(GtkOrientation orientation)
+ *widget_x = event_x;
+ *widget_y = event_y;
+}
+
+static gboolean
+sp_ruler_track_widget_motion_notify (GtkWidget *widget,
+ GdkEventMotion *mevent,
+ SPRuler *ruler)
{
- return GTK_WIDGET(g_object_new(SP_TYPE_RULER,
- "orientation", orientation,
- NULL));
+ gint widget_x;
+ gint widget_y;
+ gint ruler_x;
+ gint ruler_y;
+
+ widget = gtk_get_event_widget (reinterpret_cast<GdkEvent *>(mevent));
+
+ sp_ruler_event_to_widget_coords (widget, mevent->window,
+ mevent->x, mevent->y,
+ &widget_x, &widget_y);
+
+ if (gtk_widget_translate_coordinates (widget, GTK_WIDGET (ruler),
+ widget_x, widget_y,
+ &ruler_x, &ruler_y))
+ {
+ sp_ruler_update_position (ruler, ruler_x, ruler_y);
+ }
+
+ return FALSE;
}
+void
+sp_ruler_add_track_widget (SPRuler *ruler,
+ GtkWidget *widget)
+{
+ SPRulerPrivate *priv;
+
+ g_return_if_fail (SP_IS_RULER (ruler));
+ g_return_if_fail (GTK_IS_WIDGET (ruler));
+
+ priv = SP_RULER_GET_PRIVATE (ruler);
+
+ g_return_if_fail (g_list_find (priv->track_widgets, widget) == NULL);
+
+ priv->track_widgets = g_list_prepend (priv->track_widgets, widget);
+
+ g_signal_connect (widget, "motion-notify-event",
+ G_CALLBACK (sp_ruler_track_widget_motion_notify),
+ ruler);
+ g_signal_connect (widget, "destroy",
+ G_CALLBACK (sp_ruler_remove_track_widget),
+ ruler);
+}
+
+/**
+ * sp_ruler_remove_track_widget:
+ * @ruler: an #SPRuler
+ * @widget: the track widget to remove
+ *
+ * Removes a previously added track widget from the ruler. See
+ * sp_ruler_add_track_widget().
+ */
+void
+sp_ruler_remove_track_widget (SPRuler *ruler,
+ GtkWidget *widget)
+{
+ SPRulerPrivate *priv;
+
+ g_return_if_fail (SP_IS_RULER (ruler));
+ g_return_if_fail (GTK_IS_WIDGET (ruler));
+
+ priv = SP_RULER_GET_PRIVATE (ruler);
+
+ g_return_if_fail (g_list_find (priv->track_widgets, widget) != NULL);
+
+ priv->track_widgets = g_list_remove (priv->track_widgets, widget);
+
+ g_signal_handlers_disconnect_by_func (widget,
+ (gpointer) G_CALLBACK (sp_ruler_track_widget_motion_notify),
+ ruler);
+ g_signal_handlers_disconnect_by_func (widget,
+ (gpointer) G_CALLBACK (sp_ruler_remove_track_widget),
+ ruler);
+}
+
+/**
+ * sp_ruler_set_unit:
+ * @ruler: a #SPRuler
+ * @unit: the #SPMetric to set the ruler to
+ *
+ * This sets the unit of the ruler.
+ */
+void
+sp_ruler_set_unit (SPRuler *ruler,
+ SPMetric unit)
+{
+ SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
+
+ g_return_if_fail (SP_IS_RULER (ruler));
+
+ if (priv->unit != unit)
+ {
+ priv->unit = unit;
+ g_object_notify(G_OBJECT(ruler), "unit");
+
+ gtk_widget_queue_draw (GTK_WIDGET (ruler));
+ }
+}
+
+/**
+ * sp_ruler_get_unit:
+ * @ruler: a #SPRuler
+ *
+ * Return value: the unit currently used in the @ruler widget.
+ **/
+SPMetric
+sp_ruler_get_unit (SPRuler *ruler)
+{
+ g_return_val_if_fail(SP_IS_RULER(ruler), static_cast<SPMetric>(0));
+
+ return SP_RULER_GET_PRIVATE (ruler)->unit;
+}
/**
* sp_ruler_set_position:
@@ -820,24 +1144,9 @@ static gboolean
sp_ruler_motion_notify (GtkWidget *widget,
GdkEventMotion *event)
{
- GtkAllocation allocation;
SPRuler *ruler = SP_RULER(widget);
- SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
-
- gdk_event_request_motions(event);
- gint x = event->x;
- gint y = event->y;
-
- gtk_widget_get_allocation(widget, &allocation);
-
- if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
- priv->position = priv->lower + (priv->upper - priv->lower) * (x + UNUSED_PIXELS) / (allocation.width + 2*UNUSED_PIXELS);
- else
- priv->position = priv->lower + (priv->upper - priv->lower) * (y + UNUSED_PIXELS) / (allocation.height + 2*UNUSED_PIXELS);
-
- g_object_notify(G_OBJECT(ruler), "position");
- gtk_widget_queue_draw(widget);
+ sp_ruler_update_position (ruler, event->x, event->y);
return FALSE;
}
@@ -870,11 +1179,15 @@ sp_ruler_draw_ticks (SPRuler *ruler)
gdouble start, end, cur;
gchar unit_str[32];
gint digit_height;
+ gint digit_offset;
gchar digit_str[2] = { '\0', '\0' };
gint text_size;
gint pos;
gdouble max_size;
+ SPMetric unit;
+ SPRulerMetric ruler_metric = ruler_metric_general; /* The metric to use for this unit system */
PangoLayout *layout;
+ PangoRectangle logical_rect, ink_rect;
if (! gtk_widget_is_drawable (widget))
return;
@@ -888,24 +1201,29 @@ sp_ruler_draw_ticks (SPRuler *ruler)
ythickness = style->ythickness;
#endif
- PangoContext *pango_context = gtk_widget_get_pango_context (widget);
- layout = pango_layout_new (pango_context);
- PangoFontDescription *fs = pango_font_description_new ();
- pango_font_description_set_size (fs, RULER_FONT_SIZE);
- pango_layout_set_font_description (layout, fs);
- pango_font_description_free (fs);
-
- digit_height = (gint) floor (RULER_FONT_SIZE * RULER_FONT_VERTICAL_SPACING / PANGO_SCALE + 0.5);
+ layout = sp_ruler_get_layout (widget, "0123456789");
+ pango_layout_get_extents (layout, &ink_rect, &logical_rect);
+
+ digit_height = PANGO_PIXELS (ink_rect.height) + 2;
+ digit_offset = ink_rect.y;
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
- width = allocation.width; // in pixels; is apparently 2 pixels shorter than the canvas at each end
- height = allocation.height;
+ width = allocation.width;
+#if GTK_CHECK_VERSION(3,0,0)
+ height = allocation.height - (border.top + border.bottom);
+#else
+ height = allocation.height - ythickness * 2;
+#endif
}
else
{
width = allocation.height;
- height = allocation.width;
+#if GTK_CHECK_VERSION(3,0,0)
+ height = allocation.width - (border.top + border.bottom);
+#else
+ height = allocation.width - ythickness * 2;
+#endif
}
cr = cairo_create (priv->backing_store);
@@ -961,15 +1279,10 @@ sp_ruler_draw_ticks (SPRuler *ruler)
sp_ruler_get_range (ruler, &lower, &upper, &max_size);
- upper /= priv->metric->pixels_per_unit; // upper and lower are expressed in ruler units
- lower /= priv->metric->pixels_per_unit;
- /* "pixels_per_unit" should be "points_per_unit". This is the size of the unit
- * in 1/72nd's of an inch and has nothing to do with screen pixels */
-
if ((upper - lower) == 0)
goto out;
- increment = (gdouble) (width + 2*UNUSED_PIXELS) / (upper - lower); // screen pixels per ruler unit
+ increment = (gdouble) width / (upper - lower);
/* determine the scale
* Use the maximum extents of the ruler to determine the largest
@@ -981,23 +1294,36 @@ sp_ruler_draw_ticks (SPRuler *ruler)
* actually measuring the text width, so that the result for the
* scale looks consistent with an accompanying vruler
*/
- scale = (gint)(ceil(priv->max_size / priv->metric->pixels_per_unit));
+ scale = ceil (priv->max_size);
sprintf (unit_str, "%d", scale);
text_size = strlen (unit_str) * digit_height + 1;
- for (scale = 0; scale < G_N_ELEMENTS (priv->metric->ruler_scale); scale++)
- if (priv->metric->ruler_scale[scale] * fabs (increment) > 2 * text_size)
+ /* Inkscape change to ruler: Use a 1,2,4,8... scale for inches
+ * or a 1,2,5,10... scale for everything else */
+ if (sp_ruler_get_unit (ruler) == SP_IN)
+ ruler_metric = ruler_metric_inches;
+
+ for (scale = 0; scale < G_N_ELEMENTS (ruler_metric.ruler_scale); scale++)
+ if (ruler_metric.ruler_scale[scale] * fabs (increment) > 2 * text_size)
break;
- if (scale == G_N_ELEMENTS (priv->metric->ruler_scale))
- scale = G_N_ELEMENTS (priv->metric->ruler_scale) - 1;
+ if (scale == G_N_ELEMENTS (ruler_metric.ruler_scale))
+ scale = G_N_ELEMENTS (ruler_metric.ruler_scale) - 1;
+
+ unit = sp_ruler_get_unit (ruler);
/* drawing starts here */
length = 0;
- for (i = G_N_ELEMENTS (priv->metric->subdivide) - 1; i >= 0; i--)
+ for (i = G_N_ELEMENTS (ruler_metric.subdivide) - 1; i >= 0; i--)
{
- gdouble subd_incr = ((gdouble) priv->metric->ruler_scale[scale] /
- (gdouble) priv->metric->subdivide[i]);
+ gdouble subd_incr;
+
+ /* hack to get proper subdivisions at full pixels */
+ if (unit == SP_PX && scale == 1 && i == 1)
+ subd_incr = 1.0;
+ else
+ subd_incr = ((gdouble) ruler_metric.ruler_scale[scale] /
+ (gdouble) ruler_metric.subdivide[i]);
if (subd_incr * fabs (increment) <= MINIMUM_INCR)
continue;
@@ -1028,7 +1354,7 @@ sp_ruler_draw_ticks (SPRuler *ruler)
// be e.g. 641.50000000000; rounding behaviour is not defined in such a case (see round.h)
// and jitter will be apparent (upon redrawing some of the lines on the ruler might jump a
// by a pixel, and jump back on the next redraw). This is suppressed by adding 1e-9 (that's only one nanopixel ;-))
- pos = gint(Inkscape::round((cur - lower) * increment + 1e-12)) - UNUSED_PIXELS;
+ pos = gint(Inkscape::round((cur - lower) * increment + 1e-12));
#if GTK_CHECK_VERSION(3,0,0)
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
@@ -1059,7 +1385,7 @@ sp_ruler_draw_ticks (SPRuler *ruler)
#endif
/* draw label */
- double label_spacing_px = fabs((increment*(double)priv->metric->ruler_scale[scale])/priv->metric->subdivide[i]);
+ double label_spacing_px = fabs(increment*(double)ruler_metric.ruler_scale[scale]/ruler_metric.subdivide[i]);
if (i == 0 &&
(label_spacing_px > 6*digit_height || tick_index%2 == 0 || cur == 0) &&
(label_spacing_px > 3*digit_height || tick_index%4 == 0 || cur == 0))
@@ -1072,19 +1398,38 @@ sp_ruler_draw_ticks (SPRuler *ruler)
if (priv->orientation == GTK_ORIENTATION_HORIZONTAL)
{
pango_layout_set_text (layout, unit_str, -1);
- cairo_move_to(cr, pos+2, 0);
+ pango_layout_get_extents (layout, &logical_rect, NULL);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ cairo_move_to (cr,
+ pos + 2,
+ border.top + PANGO_PIXELS (logical_rect.y - digit_offset));
+#else
+ cairo_move_to (cr,
+ pos + 2,
+ ythickness + PANGO_PIXELS (logical_rect.y - digit_offset));
+#endif
+
pango_cairo_show_layout(cr, layout);
}
else
{
- for (gint j = 0; j < (int) strlen (unit_str); j++)
+ gint j;
+
+ for (j = 0; j < (int) strlen (unit_str); j++)
{
digit_str[0] = unit_str[j];
pango_layout_set_text (layout, digit_str, 1);
+ pango_layout_get_extents (layout, NULL, &logical_rect);
+
#if GTK_CHECK_VERSION(3,0,0)
- cairo_move_to(cr, border.left + 1, pos + digit_height * (j) + 1);
+ cairo_move_to (cr,
+ border.left + 1,
+ pos + digit_height * j + 2 + PANGO_PIXELS (logical_rect.y - digit_offset));
#else
- cairo_move_to(cr, xthickness + 1, pos + digit_height * (j) + 1);
+ cairo_move_to (cr,
+ xthickness + 1,
+ pos + digit_height * j + 2 + PANGO_PIXELS (logical_rect.y - digit_offset));
#endif
pango_cairo_show_layout (cr, layout);
}
@@ -1101,22 +1446,45 @@ out:
cairo_destroy (cr);
}
-
-void sp_ruler_set_metric(SPRuler *ruler, SPMetric metric)
+static PangoLayout*
+sp_ruler_create_layout (GtkWidget *widget,
+ const gchar *text)
{
- g_return_if_fail(ruler != NULL);
- g_return_if_fail(SP_IS_RULER (ruler));
- g_return_if_fail((unsigned) metric < G_N_ELEMENTS(sp_ruler_metrics));
- SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler);
+ SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (widget);
+ PangoLayout *layout;
+ PangoAttrList *attrs;
+ PangoAttribute *attr;
- if (metric == 0)
- return;
+ layout = gtk_widget_create_pango_layout (widget, text);
- priv->metric = const_cast<SPRulerMetric *>(&sp_ruler_metrics[metric]);
+ attrs = pango_attr_list_new ();
- g_object_notify(G_OBJECT(ruler), "metric");
+ attr = pango_attr_scale_new (priv->font_scale);
+ attr->start_index = 0;
+ attr->end_index = -1;
+ pango_attr_list_insert (attrs, attr);
- gtk_widget_queue_draw (GTK_WIDGET (ruler));
+ pango_layout_set_attributes (layout, attrs);
+ pango_attr_list_unref (attrs);
+
+ return layout;
+}
+
+static PangoLayout *
+sp_ruler_get_layout (GtkWidget *widget,
+ const gchar *text)
+{
+ SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (widget);
+
+ if (priv->layout)
+ {
+ pango_layout_set_text (priv->layout, text, -1);
+ return priv->layout;
+ }
+
+ priv->layout = sp_ruler_create_layout (widget, text);
+
+ return priv->layout;
}
/*
diff --git a/src/widgets/ruler.h b/src/widgets/ruler.h
index 9874372f1..f0d866fff 100644
--- a/src/widgets/ruler.h
+++ b/src/widgets/ruler.h
@@ -18,6 +18,8 @@
#include <iostream>
#include <glib.h>
+G_BEGIN_DECLS
+
#define SP_TYPE_RULER (sp_ruler_get_type ())
#define SP_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_RULER, SPRuler))
#define SP_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_RULER, SPRulerClass))
@@ -25,21 +27,12 @@
#define SP_IS_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_RULER))
#define SP_RULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SP_TYPE_RULER, SPRulerClass))
-
typedef struct _SPRuler SPRuler;
-typedef struct _SPRulerPrivate SPRulerPrivate;
typedef struct _SPRulerClass SPRulerClass;
-typedef struct _SPRulerMetric SPRulerMetric;
-/* All distances below are in 1/72nd's of an inch. (According to
- * Adobe that's a point, but points are really 1/72.27 in.)
- */
struct _SPRuler
{
- GtkWidget widget;
-
- /*< private >*/
- SPRulerPrivate *priv;
+ GtkWidget parent_instance;
};
struct _SPRulerClass
@@ -47,34 +40,32 @@ struct _SPRulerClass
GtkWidgetClass parent_class;
};
-struct _SPRulerMetric
-{
- gchar const *metric_name;
- gchar const *abbrev;
- /* This should be points_per_unit. This is the size of the unit
- * in 1/72nd's of an inch and has nothing to do with screen pixels */
- gdouble pixels_per_unit;
- gdouble ruler_scale[10];
- gint subdivide[5]; /* five possible modes of subdivision */
-};
+GType sp_ruler_get_type (void) G_GNUC_CONST;
+
+GtkWidget* sp_ruler_new (GtkOrientation orientation);
+
+void sp_ruler_add_track_widget (SPRuler *ruler,
+ GtkWidget *widget);
+void sp_ruler_remove_track_widget (SPRuler *ruler,
+ GtkWidget *widget);
+
+void sp_ruler_set_unit (SPRuler *ruler,
+ SPMetric unit);
+SPMetric sp_ruler_get_unit (SPRuler *ruler);
+void sp_ruler_set_position (SPRuler *ruler,
+ gdouble set_position);
+gdouble sp_ruler_get_position (SPRuler *ruler);
+void sp_ruler_set_range (SPRuler *ruler,
+ gdouble lower,
+ gdouble upper,
+ gdouble max_size);
+void sp_ruler_get_range (SPRuler *ruler,
+ gdouble *lower,
+ gdouble *upper,
+ gdouble *max_size);
-GType sp_ruler_get_type (void) G_GNUC_CONST;
-GtkWidget* sp_ruler_new (GtkOrientation orientation);
-void sp_ruler_set_position (SPRuler *ruler,
- gdouble set_position);
-gdouble sp_ruler_get_position (SPRuler *ruler);
-void sp_ruler_set_range (SPRuler *ruler,
- gdouble lower,
- gdouble upper,
- gdouble max_size);
-void sp_ruler_get_range (SPRuler *ruler,
- gdouble *lower,
- gdouble *upper,
- gdouble *max_size);
-void sp_ruler_set_metric (SPRuler *ruler,
- SPMetric metric);
-SPMetric sp_ruler_get_metric (SPRuler *ruler);
+G_END_DECLS
#endif /* __SP_RULER_H__ */
diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp
index 3ccfa9cf9..549581610 100644
--- a/src/widgets/select-toolbar.cpp
+++ b/src/widgets/select-toolbar.cpp
@@ -88,13 +88,13 @@ sp_selection_layout_widget_update(SPWidget *spw, Inkscape::Selection *sel)
if (unit.base == SP_UNIT_DIMENSIONLESS) {
double const val = 1. / unit.unittobase;
for (unsigned i = 0; i < G_N_ELEMENTS(keyval); ++i) {
- GtkAdjustment *a = (GtkAdjustment *) g_object_get_data(G_OBJECT(spw), keyval[i].key);
+ GtkAdjustment *a = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(spw), keyval[i].key));
gtk_adjustment_set_value(a, val);
tracker->setFullVal( a, keyval[i].val );
}
} else {
for (unsigned i = 0; i < G_N_ELEMENTS(keyval); ++i) {
- GtkAdjustment *a = (GtkAdjustment *) g_object_get_data(G_OBJECT(spw), keyval[i].key);
+ GtkAdjustment *a = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(spw), keyval[i].key));
gtk_adjustment_set_value(a, sp_pixels_get_units(keyval[i].val, unit));
}
}
diff --git a/src/widgets/sp-color-icc-selector.cpp b/src/widgets/sp-color-icc-selector.cpp
index 80974c2e4..d89d35e9c 100644
--- a/src/widgets/sp-color-icc-selector.cpp
+++ b/src/widgets/sp-color-icc-selector.cpp
@@ -104,12 +104,9 @@ sp_color_icc_selector_get_type (void)
static void sp_color_icc_selector_class_init(SPColorICCSelectorClass *klass)
{
static const gchar* nameset[] = {N_("CMS"), 0};
- GObjectClass *object_class = (GObjectClass *) klass;
- GtkWidgetClass *widget_class;
- SPColorSelectorClass *selector_class;
-
- widget_class = (GtkWidgetClass *) klass;
- selector_class = SP_COLOR_SELECTOR_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+ SPColorSelectorClass *selector_class = SP_COLOR_SELECTOR_CLASS (klass);
parent_class = SP_COLOR_SELECTOR_CLASS (g_type_class_peek_parent (klass));
@@ -453,7 +450,7 @@ void ColorICCSelector::init()
#endif
/* Adjustment */
- _adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 10.0, 10.0);
+ _adj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 255.0, 1.0, 10.0, 10.0));
/* Slider */
_slider = sp_color_slider_new (_adj);
@@ -510,8 +507,8 @@ void ColorICCSelector::init()
static void sp_color_icc_selector_dispose(GObject *object)
{
- if (((GObjectClass *) (parent_class))->dispose)
- (* ((GObjectClass *) (parent_class))->dispose)(object);
+ if ((G_OBJECT_CLASS(parent_class))->dispose)
+ (* (G_OBJECT_CLASS(parent_class))->dispose)(object);
}
static void
@@ -672,7 +669,7 @@ void ColorICCSelector::_profilesChanged( std::string const & name )
g_signal_handler_block( G_OBJECT(_profileSel), _profChangedID );
- GtkListStore *store = (GtkListStore *)gtk_combo_box_get_model (combo);
+ GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(combo));
gtk_list_store_clear(store);
GtkTreeIter iter;
@@ -1008,7 +1005,7 @@ void ColorICCSelector::_adjustmentChanged( GtkAdjustment *adjustment, SPColorICC
void ColorICCSelector::_sliderGrabbed( SPColorSlider */*slider*/, SPColorICCSelector */*cs*/ )
{
-// ColorICCSelector* iccSelector = (ColorICCSelector*)(SP_COLOR_SELECTOR(cs)->base);
+// ColorICCSelector* iccSelector = dynamic_cast<ColorICCSelector*>(SP_COLOR_SELECTOR(cs)->base);
// if (!iccSelector->_dragging) {
// iccSelector->_dragging = TRUE;
// iccSelector->_grabbed();
@@ -1018,7 +1015,7 @@ void ColorICCSelector::_sliderGrabbed( SPColorSlider */*slider*/, SPColorICCSele
void ColorICCSelector::_sliderReleased( SPColorSlider */*slider*/, SPColorICCSelector */*cs*/ )
{
-// ColorICCSelector* iccSelector = (ColorICCSelector*)(SP_COLOR_SELECTOR(cs)->base);
+// ColorICCSelector* iccSelector = dynamic_cast<ColorICCSelector*>(SP_COLOR_SELECTOR(cs)->base);
// if (iccSelector->_dragging) {
// iccSelector->_dragging = FALSE;
// iccSelector->_released();
@@ -1035,7 +1032,7 @@ void ColorICCSelector::_sliderChanged( SPColorSlider */*slider*/, SPColorICCSele
#ifdef DEBUG_LCMS
g_message("Changed %p and %p", slider, cs );
#endif // DEBUG_LCMS
-// ColorICCSelector* iccSelector = (ColorICCSelector*)(SP_COLOR_SELECTOR(cs)->base);
+// ColorICCSelector* iccSelector = dynamic_cast<ColorICCSelector*>(SP_COLOR_SELECTOR(cs)->base);
// iccSelector->_updateInternals( iccSelector->_color, ColorScales::getScaled( iccSelector->_adj ), iccSelector->_dragging );
}
diff --git a/src/widgets/sp-color-scales.cpp b/src/widgets/sp-color-scales.cpp
index 95c6d341d..c3f9d511c 100644
--- a/src/widgets/sp-color-scales.cpp
+++ b/src/widgets/sp-color-scales.cpp
@@ -78,12 +78,9 @@ static void
sp_color_scales_class_init (SPColorScalesClass *klass)
{
static const gchar* nameset[] = {N_("RGB"), N_("HSL"), N_("CMYK"), 0};
- GObjectClass *object_class = (GObjectClass *) klass;
- GtkWidgetClass *widget_class;
- SPColorSelectorClass *selector_class;
-
- widget_class = (GtkWidgetClass *) klass;
- selector_class = SP_COLOR_SELECTOR_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+ SPColorSelectorClass *selector_class = SP_COLOR_SELECTOR_CLASS (klass);
parent_class = SP_COLOR_SELECTOR_CLASS (g_type_class_peek_parent (klass));
@@ -164,7 +161,7 @@ void ColorScales::init()
#endif
/* Adjustment */
- _a[i] = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, _rangeLimit, 1.0, 10.0, 10.0);
+ _a[i] = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, _rangeLimit, 1.0, 10.0, 10.0));
/* Slider */
_s[i] = sp_color_slider_new (_a[i]);
gtk_widget_show (_s[i]);
@@ -217,8 +214,8 @@ void ColorScales::init()
static void sp_color_scales_dispose(GObject *object)
{
- if (((GObjectClass *) (parent_class))->dispose)
- (* ((GObjectClass *) (parent_class))->dispose) (object);
+ if ((G_OBJECT_CLASS(parent_class))->dispose)
+ (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
}
static void
@@ -466,7 +463,7 @@ void ColorScales::setMode(SPColorScalesMode mode)
gtk_label_set_markup_with_mnemonic (GTK_LABEL (_l[3]), _("_A:"));
gtk_widget_set_tooltip_text (_s[3], _("Alpha (opacity)"));
gtk_widget_set_tooltip_text (_b[3], _("Alpha (opacity)"));
- sp_color_slider_set_map (SP_COLOR_SLIDER (_s[0]), (guchar*)sp_color_scales_hue_map ());
+ sp_color_slider_set_map (SP_COLOR_SLIDER (_s[0]), (guchar *)(sp_color_scales_hue_map()));
gtk_widget_hide (_l[4]);
gtk_widget_hide (_s[4]);
gtk_widget_hide (_b[4]);
diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp
index 3ba748f2b..37cccda9f 100644
--- a/src/widgets/sp-color-slider.cpp
+++ b/src/widgets/sp-color-slider.cpp
@@ -86,12 +86,10 @@ sp_color_slider_get_type (void)
static void sp_color_slider_class_init(SPColorSliderClass *klass)
{
- GObjectClass *object_class = (GObjectClass *) klass;
- GtkWidgetClass *widget_class;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
- widget_class = (GtkWidgetClass *) klass;
-
- parent_class = (GtkWidgetClass*)g_type_class_peek_parent (klass);
+ parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent(klass));
slider_signals[GRABBED] = g_signal_new ("grabbed",
G_TYPE_FROM_CLASS(object_class),
@@ -185,8 +183,8 @@ static void sp_color_slider_dispose(GObject *object)
slider->adjustment = NULL;
}
- if (((GObjectClass *) (parent_class))->dispose)
- (* ((GObjectClass *) (parent_class))->dispose) (object);
+ if ((G_OBJECT_CLASS(parent_class))->dispose)
+ (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
}
static void
@@ -311,17 +309,16 @@ sp_color_slider_button_press (GtkWidget *widget, GdkEventButton *event)
g_signal_emit (G_OBJECT (slider), slider_signals[DRAGGED], 0);
#if GTK_CHECK_VERSION(3,0,0)
- gdk_device_grab(gdk_event_get_device((GdkEvent*)event),
+ gdk_device_grab(gdk_event_get_device(reinterpret_cast<GdkEvent *>(event)),
gtk_widget_get_window(widget),
GDK_OWNERSHIP_NONE,
FALSE,
- (GdkEventMask)(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK),
+ static_cast<GdkEventMask>(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK),
NULL,
event->time);
#else
gdk_pointer_grab(gtk_widget_get_window(widget), FALSE,
- (GdkEventMask)(GDK_POINTER_MOTION_MASK |
- GDK_BUTTON_RELEASE_MASK),
+ static_cast<GdkEventMask>(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK),
NULL, NULL, event->time);
#endif
}
@@ -339,8 +336,8 @@ sp_color_slider_button_release (GtkWidget *widget, GdkEventButton *event)
if (event->button == 1) {
#if GTK_CHECK_VERSION(3,0,0)
- gdk_device_ungrab(gdk_event_get_device((GdkEvent *)event),
- gdk_event_get_time((GdkEvent *)event));
+ gdk_device_ungrab(gdk_event_get_device(reinterpret_cast<GdkEvent *>(event)),
+ gdk_event_get_time(reinterpret_cast<GdkEvent *>(event)));
#else
gdk_pointer_ungrab (event->time);
#endif
@@ -388,7 +385,7 @@ void sp_color_slider_set_adjustment(SPColorSlider *slider, GtkAdjustment *adjust
g_return_if_fail (SP_IS_COLOR_SLIDER (slider));
if (!adjustment) {
- adjustment = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 1.0, 0.01, 0.0, 0.0);
+ adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 1.0, 0.01, 0.0, 0.0));
} else {
gtk_adjustment_set_page_increment(adjustment, 0.0);
gtk_adjustment_set_page_size(adjustment, 0.0);
@@ -448,7 +445,7 @@ sp_color_slider_set_map (SPColorSlider *slider, const guchar *map)
g_return_if_fail (slider != NULL);
g_return_if_fail (SP_IS_COLOR_SLIDER (slider));
- slider->map = (guchar *) map;
+ slider->map = const_cast<guchar *>(map);
gtk_widget_queue_draw (GTK_WIDGET (slider));
}
diff --git a/src/widgets/sp-color-wheel-selector.cpp b/src/widgets/sp-color-wheel-selector.cpp
index a979a168a..3e91274d2 100644
--- a/src/widgets/sp-color-wheel-selector.cpp
+++ b/src/widgets/sp-color-wheel-selector.cpp
@@ -56,12 +56,9 @@ sp_color_wheel_selector_get_type (void)
static void sp_color_wheel_selector_class_init(SPColorWheelSelectorClass *klass)
{
static const gchar* nameset[] = {N_("Wheel"), 0};
- GObjectClass *object_class = (GObjectClass *) klass;
- GtkWidgetClass *widget_class;
- SPColorSelectorClass *selector_class;
-
- widget_class = (GtkWidgetClass *) klass;
- selector_class = SP_COLOR_SELECTOR_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+ SPColorSelectorClass *selector_class = SP_COLOR_SELECTOR_CLASS (klass);
parent_class = SP_COLOR_SELECTOR_CLASS (g_type_class_peek_parent (klass));
@@ -197,7 +194,7 @@ void ColorWheelSelector::init()
#endif
/* Adjustment */
- _adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 10.0, 10.0);
+ _adj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 255.0, 1.0, 10.0, 10.0));
/* Slider */
_slider = sp_color_slider_new (_adj);
@@ -266,8 +263,8 @@ void ColorWheelSelector::init()
static void sp_color_wheel_selector_dispose(GObject *object)
{
- if (((GObjectClass *) (parent_class))->dispose)
- (* ((GObjectClass *) (parent_class))->dispose) (object);
+ if ((G_OBJECT_CLASS(parent_class))->dispose)
+ (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
}
static void
diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp
index 8d840da25..7876f0454 100644
--- a/src/widgets/sp-widget.cpp
+++ b/src/widgets/sp-widget.cpp
@@ -306,7 +306,7 @@ GtkWidget *SPWidgetImpl::constructGlobal(SPWidget *spw, Inkscape::Application *i
g_signal_emit(spw, signals[CONSTRUCT], 0);
- return (GtkWidget *) spw;
+ return GTK_WIDGET(spw);
}
void SPWidgetImpl::modifySelectionCB(Application *inkscape, Selection *selection, guint flags, SPWidget *spw)
diff --git a/src/widgets/sp-xmlview-attr-list.cpp b/src/widgets/sp-xmlview-attr-list.cpp
index 1fd120d17..47b0ebb9d 100644
--- a/src/widgets/sp-xmlview-attr-list.cpp
+++ b/src/widgets/sp-xmlview-attr-list.cpp
@@ -68,7 +68,7 @@ GtkWidget *sp_xmlview_attr_list_new (Inkscape::XML::Node * repr)
sp_xmlview_attr_list_set_repr (attr_list, repr);
- return (GtkWidget *) attr_list;
+ return GTK_WIDGET(attr_list);
}
void
@@ -114,14 +114,14 @@ GType sp_xmlview_attr_list_get_type(void)
void sp_xmlview_attr_list_class_init (SPXMLViewAttrListClass * klass)
{
#if GTK_CHECK_VERSION(3,0,0)
- GtkWidgetClass * widget_class = (GtkWidgetClass *) klass;
+ GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass);
widget_class->destroy = sp_xmlview_attr_list_destroy;
#else
- GtkObjectClass * object_class = (GtkObjectClass *) klass;
+ GtkObjectClass * object_class = GTK_OBJECT_CLASS(klass);
object_class->destroy = sp_xmlview_attr_list_destroy;
#endif
- parent_class = (GtkTreeViewClass*)g_type_class_peek_parent (klass);
+ parent_class = GTK_TREE_VIEW_CLASS(g_type_class_peek_parent (klass));
g_signal_new("row-value-changed",
G_TYPE_FROM_CLASS(klass),
diff --git a/src/widgets/sp-xmlview-content.cpp b/src/widgets/sp-xmlview-content.cpp
index d31e031c2..ac64dabdb 100644
--- a/src/widgets/sp-xmlview-content.cpp
+++ b/src/widgets/sp-xmlview-content.cpp
@@ -59,7 +59,7 @@ GtkWidget *sp_xmlview_content_new(Inkscape::XML::Node * repr)
sp_xmlview_content_set_repr (text, repr);
- return (GtkWidget *) text;
+ return GTK_WIDGET(text);
}
void
@@ -107,14 +107,14 @@ GType sp_xmlview_content_get_type(void)
void sp_xmlview_content_class_init(SPXMLViewContentClass * klass)
{
#if GTK_CHECK_VERSION(3,0,0)
- GtkWidgetClass * widget_class = (GtkWidgetClass *) klass;
+ GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass);
widget_class->destroy = sp_xmlview_content_destroy;
#else
- GtkObjectClass * object_class = (GtkObjectClass *) klass;
+ GtkObjectClass * object_class = GTK_OBJECT_CLASS(klass);
object_class->destroy = sp_xmlview_content_destroy;
#endif
- parent_class = (GtkTextViewClass*)g_type_class_peek_parent (klass);
+ parent_class = GTK_TEXT_VIEW_CLASS(g_type_class_peek_parent (klass));
}
void
diff --git a/src/widgets/sp-xmlview-tree.cpp b/src/widgets/sp-xmlview-tree.cpp
index 258cea0b4..bc6031c1e 100644
--- a/src/widgets/sp-xmlview-tree.cpp
+++ b/src/widgets/sp-xmlview-tree.cpp
@@ -122,7 +122,7 @@ GtkWidget *sp_xmlview_tree_new(Inkscape::XML::Node * repr, void * /*factory*/, v
g_signal_connect(GTK_TREE_VIEW(tree), "drag_data_received", G_CALLBACK(on_drag_data_received), tree);
g_signal_connect(GTK_TREE_VIEW(tree), "drag-motion", G_CALLBACK(do_drag_motion), tree);
- return (GtkWidget *) tree;
+ return GTK_WIDGET(tree);
}
GType
@@ -151,14 +151,14 @@ sp_xmlview_tree_get_type (void)
void sp_xmlview_tree_class_init(SPXMLViewTreeClass * klass)
{
#if GTK_CHECK_VERSION(3,0,0)
- GtkWidgetClass * widget_class = (GtkWidgetClass *) klass;
+ GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass);
widget_class->destroy = sp_xmlview_tree_destroy;
#else
- GtkObjectClass * object_class = (GtkObjectClass *) klass;
+ GtkObjectClass * object_class = GTK_OBJECT_CLASS(klass);
object_class->destroy = sp_xmlview_tree_destroy;
#endif
- parent_class = (GtkTreeViewClass *) g_type_class_peek_parent (klass);
+ parent_class = GTK_TREE_VIEW_CLASS(g_type_class_peek_parent (klass));
// Signal for when a tree drag and drop has completed
g_signal_new ( "tree_move",
@@ -441,7 +441,7 @@ void on_row_changed(GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *it
return;
}
- GtkTreeRowReference *old_parent_ref = (GtkTreeRowReference *)g_object_get_data (G_OBJECT (tree), "drag-src-path");
+ GtkTreeRowReference *old_parent_ref = static_cast<GtkTreeRowReference *>(g_object_get_data (G_OBJECT (tree), "drag-src-path"));
if (!old_parent_ref) {
//No drag source location
g_signal_emit_by_name(G_OBJECT (tree), "tree_move", GUINT_TO_POINTER(0) );
diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp
index 1d44b9190..96d746468 100644
--- a/src/widgets/spinbutton-events.cpp
+++ b/src/widgets/spinbutton-events.cpp
@@ -23,11 +23,9 @@
#include "spinbutton-events.h"
gboolean
-spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/)
+spinbutton_focus_in (GtkWidget *w, GdkEventKey * /*event*/, gpointer /*data*/)
{
- gdouble *ini;
-
- ini = (gdouble *) g_object_get_data(G_OBJECT (w), "ini");
+ gdouble *ini = static_cast<gdouble *>(g_object_get_data(G_OBJECT(w), "ini"));
if (ini) g_free (ini); // free the old value if any
// retrieve the value
@@ -43,7 +41,7 @@ spinbutton_focus_in (GtkWidget *w, GdkEventKey */*event*/, gpointer /*data*/)
void
spinbutton_undo (GtkWidget *w)
{
- gdouble *ini = (gdouble *) g_object_get_data(G_OBJECT (w), "ini");
+ gdouble *ini = static_cast<gdouble *>(g_object_get_data(G_OBJECT (w), "ini"));
if (ini) {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w), *ini);
}
@@ -57,7 +55,7 @@ spinbutton_defocus (GtkWidget *container)
if (stay) {
g_object_set_data (G_OBJECT (container), "stay", GINT_TO_POINTER (FALSE));
} else {
- GtkWidget *canvas = (GtkWidget *) g_object_get_data(G_OBJECT (container), "dtw");
+ GtkWidget *canvas = GTK_WIDGET(g_object_get_data(G_OBJECT (container), "dtw"));
if (canvas) {
gtk_widget_grab_focus (GTK_WIDGET(canvas));
}
diff --git a/src/widgets/spiral-toolbar.cpp b/src/widgets/spiral-toolbar.cpp
index c51c8b6cf..b493ca5bf 100644
--- a/src/widgets/spiral-toolbar.cpp
+++ b/src/widgets/spiral-toolbar.cpp
@@ -147,15 +147,15 @@ static void sp_spl_tb_defaults(GtkWidget * /*widget*/, GObject *obj)
gdouble exp = 1.0;
gdouble t0 = 0.0;
- adj = (GtkAdjustment*)g_object_get_data(obj, "revolution");
+ adj = GTK_ADJUSTMENT(g_object_get_data(obj, "revolution"));
gtk_adjustment_set_value(adj, rev);
gtk_adjustment_value_changed(adj);
- adj = (GtkAdjustment*)g_object_get_data(obj, "expansion");
+ adj = GTK_ADJUSTMENT(g_object_get_data(obj, "expansion"));
gtk_adjustment_set_value(adj, exp);
gtk_adjustment_value_changed(adj);
- adj = (GtkAdjustment*)g_object_get_data(obj, "t0");
+ adj = GTK_ADJUSTMENT(g_object_get_data(obj, "t0"));
gtk_adjustment_set_value(adj, t0);
gtk_adjustment_value_changed(adj);
@@ -181,17 +181,17 @@ static void spiral_tb_event_attr_changed(Inkscape::XML::Node *repr,
g_object_set_data(G_OBJECT(tbl), "freeze", GINT_TO_POINTER(TRUE));
GtkAdjustment *adj;
- adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "revolution");
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "revolution"));
double revolution = 3.0;
sp_repr_get_double(repr, "sodipodi:revolution", &revolution);
gtk_adjustment_set_value(adj, revolution);
- adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "expansion");
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "expansion"));
double expansion = 1.0;
sp_repr_get_double(repr, "sodipodi:expansion", &expansion);
gtk_adjustment_set_value(adj, expansion);
- adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "t0");
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "t0"));
double t0 = 0.0;
sp_repr_get_double(repr, "sodipodi:t0", &t0);
gtk_adjustment_set_value(adj, t0);
diff --git a/src/widgets/star-toolbar.cpp b/src/widgets/star-toolbar.cpp
index d783e3336..f8c5714cb 100644
--- a/src/widgets/star-toolbar.cpp
+++ b/src/widgets/star-toolbar.cpp
@@ -337,7 +337,7 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n
gtk_action_set_sensitive( prop_action, FALSE );
}
} else if ((!strcmp(name, "sodipodi:r1") || !strcmp(name, "sodipodi:r2")) && (!isFlatSided) ) {
- adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "proportion");
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "proportion"));
gdouble r1 = 1.0;
gdouble r2 = 1.0;
sp_repr_get_double(repr, "sodipodi:r1", &r1);
@@ -348,7 +348,7 @@ static void star_tb_event_attr_changed(Inkscape::XML::Node *repr, gchar const *n
gtk_adjustment_set_value(adj, r1/r2);
}
} else if (!strcmp(name, "sodipodi:sides")) {
- adj = (GtkAdjustment*)g_object_get_data(G_OBJECT(tbl), "magnitude");
+ adj = GTK_ADJUSTMENT(g_object_get_data(G_OBJECT(tbl), "magnitude"));
int sides = 0;
sp_repr_get_int(repr, "sodipodi:sides", &sides);
gtk_adjustment_set_value(adj, sides);
diff --git a/src/widgets/widget-sizes.h b/src/widgets/widget-sizes.h
index fe89d4574..87c7ca2e0 100644
--- a/src/widgets/widget-sizes.h
+++ b/src/widgets/widget-sizes.h
@@ -35,11 +35,6 @@
#define STATUS_LAYER_FONT_SIZE 7700
-#define RULER_WIDTH 12
-#define RULER_HEIGHT 12
-#define RULER_FONT_SIZE 6500
-#define RULER_FONT_VERTICAL_SPACING 1.2
-
/*
Local Variables:
mode:c++