X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Ftext-context.cpp;h=1185e08ef6053fcb593f15bf29d0d328bc2a0d31;hb=9c0a44bb47b022c4cdb319d697ccd5a42d3253dd;hp=a181f4f6fb22d70f63128da9fe536da50ce68dd3;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/text-context.cpp b/src/text-context.cpp index a181f4f6f..1185e08ef 100644 --- a/src/text-context.cpp +++ b/src/text-context.cpp @@ -39,7 +39,9 @@ #include "message-stack.h" #include "message-context.h" #include "pixmaps/cursor-text.xpm" +#include "pixmaps/cursor-text.pixbuf" #include "pixmaps/cursor-text-insert.xpm" +#include "pixmaps/cursor-text-insert.pixbuf" #include #include "object-edit.h" #include "xml/repr.h" @@ -48,6 +50,7 @@ #include "rubberband.h" #include "sp-metrics.h" #include "context-fns.h" +#include "verbs.h" #include "text-editing.h" @@ -122,6 +125,11 @@ sp_text_context_init(SPTextContext *tc) SPEventContext *event_context = SP_EVENT_CONTEXT(tc); event_context->cursor_shape = cursor_text_xpm; + event_context->cursor_pixbuf = gdk_pixbuf_new_from_inline( + -1, + cursor_text_pixbuf, + FALSE, + NULL); event_context->hot_x = 7; event_context->hot_y = 7; @@ -180,9 +188,9 @@ sp_text_context_dispose(GObject *obj) sp_canvas_item_ungrab(tc->grabbed, GDK_CURRENT_TIME); tc->grabbed = NULL; } - + Inkscape::Rubberband::get()->stop(); - + if (ec->shape_knot_holder) { sp_knot_holder_destroy(ec->shape_knot_holder); ec->shape_knot_holder = NULL; @@ -208,17 +216,17 @@ sp_text_context_setup(SPEventContext *ec) SPTextContext *tc = SP_TEXT_CONTEXT(ec); SPDesktop *desktop = ec->desktop; - tc->cursor = sp_canvas_item_new(SP_DT_CONTROLS(desktop), SP_TYPE_CTRLLINE, NULL); + tc->cursor = sp_canvas_item_new(sp_desktop_controls(desktop), SP_TYPE_CTRLLINE, NULL); sp_ctrlline_set_coords(SP_CTRLLINE(tc->cursor), 100, 0, 100, 100); sp_ctrlline_set_rgba32(SP_CTRLLINE(tc->cursor), 0x000000ff); sp_canvas_item_hide(tc->cursor); - tc->indicator = sp_canvas_item_new(SP_DT_CONTROLS(desktop), SP_TYPE_CTRLRECT, NULL); + tc->indicator = sp_canvas_item_new(sp_desktop_controls(desktop), SP_TYPE_CTRLRECT, NULL); SP_CTRLRECT(tc->indicator)->setRectangle(NR::Rect(NR::Point(0, 0), NR::Point(100, 100))); SP_CTRLRECT(tc->indicator)->setColor(0x0000ff7f, false, 0); sp_canvas_item_hide(tc->indicator); - tc->frame = sp_canvas_item_new(SP_DT_CONTROLS(desktop), SP_TYPE_CTRLRECT, NULL); + tc->frame = sp_canvas_item_new(sp_desktop_controls(desktop), SP_TYPE_CTRLRECT, NULL); SP_CTRLRECT(tc->frame)->setRectangle(NR::Rect(NR::Point(0, 0), NR::Point(100, 100))); SP_CTRLRECT(tc->frame)->setColor(0x0000ff7f, false, 0); sp_canvas_item_hide(tc->frame); @@ -227,7 +235,7 @@ sp_text_context_setup(SPEventContext *ec) tc->imc = gtk_im_multicontext_new(); if (tc->imc) { - GtkWidget *canvas = GTK_WIDGET(SP_DT_CANVAS(desktop)); + GtkWidget *canvas = GTK_WIDGET(sp_desktop_canvas(desktop)); /* im preedit handling is very broken in inkscape for * multi-byte characters. See bug 1086769. @@ -250,7 +258,7 @@ sp_text_context_setup(SPEventContext *ec) if (((SPEventContextClass *) parent_class)->setup) ((SPEventContextClass *) parent_class)->setup(ec); - SPItem *item = SP_DT_SELECTION(ec->desktop)->singleItem(); + SPItem *item = sp_desktop_selection(ec->desktop)->singleItem(); if (item && SP_IS_FLOWTEXT (item) && SP_FLOWTEXT(item)->has_internal_frame()) { ec->shape_knot_holder = sp_item_knot_holder(item, ec->desktop); Inkscape::XML::Node *shape_repr = SP_OBJECT_REPR(SP_FLOWTEXT(item)->get_frame(NULL)); @@ -258,14 +266,13 @@ sp_text_context_setup(SPEventContext *ec) ec->shape_repr = shape_repr; Inkscape::GC::anchor(shape_repr); sp_repr_add_listener(shape_repr, &ec_shape_repr_events, ec); - sp_repr_synthesize_events(shape_repr, &ec_shape_repr_events, ec); } } - tc->sel_changed_connection = SP_DT_SELECTION(desktop)->connectChanged( + tc->sel_changed_connection = sp_desktop_selection(desktop)->connectChanged( sigc::bind(sigc::ptr_fun(&sp_text_context_selection_changed), tc) ); - tc->sel_modified_connection = SP_DT_SELECTION(desktop)->connectModified( + tc->sel_modified_connection = sp_desktop_selection(desktop)->connectModified( sigc::bind(sigc::ptr_fun(&sp_text_context_selection_modified), tc) ); tc->style_set_connection = desktop->connectSetStyle( @@ -275,7 +282,7 @@ sp_text_context_setup(SPEventContext *ec) sigc::bind(sigc::ptr_fun(&sp_text_context_style_query), tc) ); - sp_text_context_selection_changed(SP_DT_SELECTION(desktop), tc); + sp_text_context_selection_changed(sp_desktop_selection(desktop), tc); if (prefs_get_int_attribute("tools.text", "selcue", 0) != 0) { ec->enableSelectionCue(); @@ -332,7 +339,7 @@ sp_text_context_finish(SPEventContext *ec) tc->text_selection_quads.clear(); if (ec->desktop) { - sp_signal_disconnect_by_data(SP_DT_CANVAS(ec->desktop), tc); + sp_signal_disconnect_by_data(sp_desktop_canvas(ec->desktop), tc); } } @@ -354,7 +361,7 @@ sp_text_context_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event) // find out clicked item, disregarding groups item_ungrouped = desktop->item_at_point(NR::Point(event->button.x, event->button.y), TRUE); if (SP_IS_TEXT(item_ungrouped) || SP_IS_FLOWTEXT(item_ungrouped)) { - SP_DT_SELECTION(ec->desktop)->set(item_ungrouped); + sp_desktop_selection(ec->desktop)->set(item_ungrouped); if (tc->text) { // find out click point in document coordinates NR::Point p = ec->desktop->w2d(NR::Point(event->button.x, event->button.y)); @@ -413,14 +420,14 @@ sp_text_context_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event) if (new_end < tc->text_sel_start) { if (!layout->isStartOfWord(new_end)) new_end.prevStartOfWord(); - } else + } else if (!layout->isEndOfWord(new_end)) new_end.nextEndOfWord(); } else if (tc->dragging == 3) { // triple-click dragging: go by line if (new_end < tc->text_sel_start) new_end.thisStartOfLine(); - else + else new_end.thisEndOfLine(); } // update display @@ -439,6 +446,11 @@ sp_text_context_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event) SP_CTRLRECT(tc->indicator)->setRectangle(sp_item_bbox_desktop(item_ungrouped)); ec->cursor_shape = cursor_text_insert_xpm; + ec->cursor_pixbuf = gdk_pixbuf_new_from_inline( + -1, + cursor_text_insert_pixbuf, + FALSE, + NULL); ec->hot_x = 7; ec->hot_y = 10; sp_event_context_update_cursor(ec); @@ -495,11 +507,12 @@ sp_text_context_setup_text(SPTextContext *tc) SPItem *text_item = SP_ITEM(ec->desktop->currentLayer()->appendChildRepr(rtext)); /* fixme: Is selection::changed really immediate? */ /* yes, it's immediate .. why does it matter? */ - SP_DT_SELECTION(ec->desktop)->set(text_item); + sp_desktop_selection(ec->desktop)->set(text_item); Inkscape::GC::release(rtext); text_item->transform = SP_ITEM(ec->desktop->currentRoot())->getRelativeTransform(ec->desktop->currentLayer()); text_item->updateRepr(); - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:515"); } /** @@ -519,7 +532,8 @@ insert_uni_char(SPTextContext *const tc) tc->unipos = 0; tc->uni[tc->unipos] = '\0'; - if (!g_unichar_isprint((gunichar) uv)) { + if ( !g_unichar_isprint(static_cast(uv)) + && !(g_unichar_validate(static_cast(uv)) && (g_unichar_type(static_cast(uv)) == G_UNICODE_PRIVATE_USE) ) ) { // This may be due to bad input, so it goes to statusbar. tc->desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("Non-printable character")); @@ -536,7 +550,8 @@ insert_uni_char(SPTextContext *const tc) tc->text_sel_start = tc->text_sel_end = sp_te_replace(tc->text, tc->text_sel_start, tc->text_sel_end, u); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_done(SP_DT_DOCUMENT(tc->desktop)); + sp_document_done(sp_desktop_document(tc->desktop), SP_VERB_DIALOG_TRANSFORM, + /* TODO: annotate */ "text-context.cpp:554"); } } @@ -610,7 +625,7 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) Inkscape::Rubberband::get()->start(desktop, tc->p0); sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), GDK_KEY_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK, + GDK_POINTER_MOTION_MASK, NULL, event->button.time); tc->grabbed = SP_CANVAS_ITEM(desktop->acetate); tc->creating = 1; @@ -619,11 +634,16 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) return TRUE; } break; - case GDK_MOTION_NOTIFY: + case GDK_MOTION_NOTIFY: if (tc->over_text) { tc->over_text = 0; // update cursor and statusbar: we are not over a text object now ec->cursor_shape = cursor_text_xpm; + ec->cursor_pixbuf = gdk_pixbuf_new_from_inline( + -1, + cursor_text_pixbuf, + FALSE, + NULL); ec->hot_x = 7; ec->hot_y = 7; sp_event_context_update_cursor(ec); @@ -656,7 +676,7 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) } break; - case GDK_BUTTON_RELEASE: + case GDK_BUTTON_RELEASE: if (event->button.button == 1) { if (tc->grabbed) { @@ -668,7 +688,7 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) if (tc->creating && ec->within_tolerance) { /* Button 1, set X & Y & new item */ - SP_DT_SELECTION(desktop)->clear(); + sp_desktop_selection(desktop)->clear(); NR::Point dtp = ec->desktop->w2d(NR::Point(event->button.x, event->button.y)); tc->pdoc = sp_desktop_dt2root_xy_point(ec->desktop, dtp); @@ -692,9 +712,10 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) if (fabs(p1[NR::Y] - tc->p0[NR::Y]) > cursor_height) { // otherwise even one line won't fit; most probably a slip of hand (even if bigger than tolerance) SPItem *ft = create_flowtext_with_internal_frame (desktop, tc->p0, p1); - SP_DT_SELECTION(desktop)->set(ft); + sp_desktop_selection(desktop)->set(ft); ec->desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Flowed text is created.")); - sp_document_done(SP_DT_DOCUMENT(desktop)); + sp_document_done(sp_desktop_document(desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:718"); } else { ec->desktop->messageStack()->flash(Inkscape::ERROR_MESSAGE, _("The frame is too small for the current font size. Flowed text not created.")); } @@ -805,6 +826,13 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) /* Neither unimode nor IM consumed key; process text tool shortcuts */ switch (group0_keyval) { + case GDK_x: + case GDK_X: + if (MOD__ALT_ONLY) { + desktop->setToolboxFocusTo ("altx-text"); + return TRUE; + } + break; case GDK_space: if (MOD__CTRL_ONLY) { /* No-break space */ @@ -816,7 +844,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); ec->desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("No-break space")); - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:848"); return TRUE; } break; @@ -852,7 +881,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_repr_css_set_property(css, "font-weight", "normal"); sp_te_apply_style(tc->text, tc->text_sel_start, tc->text_sel_end, css); sp_repr_css_attr_unref(css); - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:885"); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); return TRUE; @@ -869,7 +899,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_repr_css_set_property(css, "font-style", "normal"); sp_te_apply_style(tc->text, tc->text_sel_start, tc->text_sel_end, css); sp_repr_css_attr_unref(css); - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:903"); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); return TRUE; @@ -900,7 +931,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) tc->text_sel_start = tc->text_sel_end = sp_te_insert_line(tc->text, tc->text_sel_start); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:935"); return TRUE; case GDK_BackSpace: if (tc->text) { // if nascent_object, do nothing, but return TRUE; same for all other delete and move keys @@ -909,7 +941,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) tc->text_sel_start = tc->text_sel_end = sp_te_delete(tc->text, tc->text_sel_start, tc->text_sel_end); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:945"); } return TRUE; case GDK_Delete: @@ -920,7 +953,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) tc->text_sel_start = tc->text_sel_end = sp_te_delete(tc->text, tc->text_sel_start, tc->text_sel_end); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:957"); } return TRUE; case GDK_Left: @@ -934,7 +968,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_kerning_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, NR::Point(-1, 0)); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "kern:left"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "kern:left", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:972"); } else { cursor_movement_operator = MOD__CTRL ? &Inkscape::Text::Layout::iterator::cursorLeftWithControl : &Inkscape::Text::Layout::iterator::cursorLeft; @@ -953,7 +988,8 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_kerning_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, NR::Point(1, 0)); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "kern:right"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "kern:right", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:992"); } else { cursor_movement_operator = MOD__CTRL ? &Inkscape::Text::Layout::iterator::cursorRightWithControl : &Inkscape::Text::Layout::iterator::cursorRight; @@ -972,7 +1008,9 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_kerning_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, NR::Point(0, -1)); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "kern:up"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "kern:up", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1012"); + } else { cursor_movement_operator = MOD__CTRL ? &Inkscape::Text::Layout::iterator::cursorUpWithControl : &Inkscape::Text::Layout::iterator::cursorUp; @@ -991,7 +1029,9 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_kerning_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, NR::Point(0, 1)); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "kern:down"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "kern:down", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1033"); + } else { cursor_movement_operator = MOD__CTRL ? &Inkscape::Text::Layout::iterator::cursorDownWithControl : &Inkscape::Text::Layout::iterator::cursorDown; @@ -1004,7 +1044,7 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) if (tc->text) { if (MOD__CTRL) cursor_movement_operator = &Inkscape::Text::Layout::iterator::thisStartOfShape; - else + else cursor_movement_operator = &Inkscape::Text::Layout::iterator::thisStartOfLine; break; } @@ -1014,7 +1054,7 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) if (tc->text) { if (MOD__CTRL) cursor_movement_operator = &Inkscape::Text::Layout::iterator::nextStartOfShape; - else + else cursor_movement_operator = &Inkscape::Text::Layout::iterator::thisEndOfLine; break; } @@ -1028,8 +1068,9 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) } Inkscape::Rubberband::get()->stop(); } else { - SP_DT_SELECTION(ec->desktop)->clear(); + sp_desktop_selection(ec->desktop)->clear(); } + tc->nascent_object = FALSE; return TRUE; case GDK_bracketleft: if (tc->text) { @@ -1040,15 +1081,16 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_rotation_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, -10); } else { sp_te_adjust_rotation_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, -1); - } + } } else { sp_te_adjust_rotation(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, -90); } - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "textrot:ccw"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "textrot:ccw", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1089"); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); return TRUE; - } + } } break; case GDK_bracketright: @@ -1060,11 +1102,12 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_rotation_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, 10); } else { sp_te_adjust_rotation_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, 1); - } + } } else { sp_te_adjust_rotation(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, 90); } - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "textrot:cw"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "textrot:cw", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1110"); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); return TRUE; @@ -1080,13 +1123,17 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_linespacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, -10); else sp_te_adjust_linespacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, -1); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "linespacing:dec"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "linespacing:dec", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1127"); + } else { if (MOD__SHIFT) sp_te_adjust_tspan_letterspacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, -10); else sp_te_adjust_tspan_letterspacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, -1); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "letterspacing:dec"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "letterspacing:dec", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1135"); + } sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); @@ -1103,13 +1150,17 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) sp_te_adjust_linespacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, 10); else sp_te_adjust_linespacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, 1); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "linespacing:inc"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "linespacing:inc", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1154"); + } else { if (MOD__SHIFT) sp_te_adjust_tspan_letterspacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, 10); else sp_te_adjust_tspan_letterspacing_screen(tc->text, tc->text_sel_start, tc->text_sel_end, ec->desktop, 1); - sp_document_maybe_done(SP_DT_DOCUMENT(ec->desktop), "letterspacing:inc"); + sp_document_maybe_done(sp_desktop_document(ec->desktop), "letterspacing:inc", SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1162"); + } sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); @@ -1151,7 +1202,7 @@ sp_text_context_root_handler(SPEventContext *const ec, GdkEvent *const event) tc->grabbed = NULL; } Inkscape::Rubberband::get()->stop(); - } + } } } break; @@ -1211,7 +1262,8 @@ sp_text_paste_inline(SPEventContext *ec) tc->text_sel_start = tc->text_sel_end = sp_te_insert_line(tc->text, tc->text_sel_start); begin = end + 1; } - sp_document_done(SP_DT_DOCUMENT(ec->desktop)); + sp_document_done(sp_desktop_document(ec->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1266"); return true; } @@ -1285,7 +1337,6 @@ sp_text_context_selection_changed(Inkscape::Selection *selection, SPTextContext ec->shape_repr = shape_repr; Inkscape::GC::anchor(shape_repr); sp_repr_add_listener(shape_repr, &ec_shape_repr_events, ec); - sp_repr_synthesize_events(shape_repr, &ec_shape_repr_events, ec); } } @@ -1325,7 +1376,8 @@ sp_text_context_style_set(SPCSSAttr const *css, SPTextContext *tc) return false; // will get picked up by the parent and applied to the whole text object sp_te_apply_style(tc->text, tc->text_sel_start, tc->text_sel_end, css); - sp_document_done(SP_DT_DOCUMENT(tc->desktop)); + sp_document_done(sp_desktop_document(tc->desktop), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1380"); sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); @@ -1356,9 +1408,11 @@ sp_text_context_style_query(SPStyle *style, int property, SPTextContext *tc) if (!begin_it.prevCharacter()) end_it.nextCharacter(); for (Inkscape::Text::Layout::iterator it = begin_it ; it < end_it ; it.nextStartOfSpan()) { - SPObject const *pos_obj = NULL; - layout->getSourceOfCharacter(it, (void**)&pos_obj); - if (pos_obj == NULL) continue; + SPObject const *pos_obj = 0; + void *rawptr = 0; + layout->getSourceOfCharacter(it, &rawptr); + pos_obj = SP_OBJECT(rawptr); + if (pos_obj == 0) continue; while (SP_OBJECT_STYLE(pos_obj) == NULL && SP_OBJECT_PARENT(pos_obj)) pos_obj = SP_OBJECT_PARENT(pos_obj); // SPStrings don't have style styles_list = g_slist_prepend(styles_list, (gpointer)pos_obj); @@ -1451,7 +1505,7 @@ static void sp_text_context_update_text_selection(SPTextContext *tc) quads = sp_te_create_selection_quads(tc->text, tc->text_sel_start, tc->text_sel_end, sp_item_i2d_affine(tc->text)); for (unsigned i = 0 ; i < quads.size() ; i += 4) { SPCanvasItem *quad_canvasitem; - quad_canvasitem = sp_canvas_item_new(SP_DT_CONTROLS(tc->desktop), SP_TYPE_CTRLQUADR, NULL); + quad_canvasitem = sp_canvas_item_new(sp_desktop_controls(tc->desktop), SP_TYPE_CTRLQUADR, NULL); sp_ctrlquadr_set_rgba32(SP_CTRLQUADR(quad_canvasitem), 0x000000ff); sp_ctrlquadr_set_coords(SP_CTRLQUADR(quad_canvasitem), quads[i], quads[i+1], quads[i+2], quads[i+3]); sp_canvas_item_show(quad_canvasitem); @@ -1521,7 +1575,8 @@ sptc_commit(GtkIMContext *imc, gchar *string, SPTextContext *tc) sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); - sp_document_done(SP_OBJECT_DOCUMENT(tc->text)); + sp_document_done(SP_OBJECT_DOCUMENT(tc->text), SP_VERB_CONTEXT_TEXT, + /* TODO: annotate */ "text-context.cpp:1579"); }