summaryrefslogtreecommitdiffstats
path: root/src/text-context.cpp
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-04-13 16:13:17 +0000
committerMarkus Engel <markus.engel@tum.de>2013-04-13 16:13:17 +0000
commitfbdc8b84ff670c684dafc7d7d403ed01e7077e70 (patch)
tree964a82e4e94d8d6602e90893ac51ac9e2f7ec362 /src/text-context.cpp
parentMade factory a template. (diff)
downloadinkscape-fbdc8b84ff670c684dafc7d7d403ed01e7077e70.tar.gz
inkscape-fbdc8b84ff670c684dafc7d7d403ed01e7077e70.zip
Replaced casting macros for EventContext tree; added contructors.
(bzr r11608.1.96)
Diffstat (limited to 'src/text-context.cpp')
-rw-r--r--src/text-context.cpp45
1 files changed, 18 insertions, 27 deletions
diff --git a/src/text-context.cpp b/src/text-context.cpp
index 1f8262e3f..5fd2960e1 100644
--- a/src/text-context.cpp
+++ b/src/text-context.cpp
@@ -59,11 +59,6 @@ using Inkscape::DocumentUndo;
static void sp_text_context_dispose(GObject *obj);
-static void sp_text_context_setup(SPEventContext *ec);
-static void sp_text_context_finish(SPEventContext *ec);
-static gint sp_text_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-static gint sp_text_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
static void sp_text_context_selection_changed(Inkscape::Selection *selection, SPTextContext *tc);
static void sp_text_context_selection_modified(Inkscape::Selection *selection, guint flags, SPTextContext *tc);
static bool sp_text_context_style_set(SPCSSAttr const *css, SPTextContext *tc);
@@ -79,6 +74,21 @@ static gint sptc_focus_in(GtkWidget *widget, GdkEventFocus *event, SPTextContext
static gint sptc_focus_out(GtkWidget *widget, GdkEventFocus *event, SPTextContext *tc);
static void sptc_commit(GtkIMContext *imc, gchar *string, SPTextContext *tc);
+
+#include "sp-factory.h"
+
+namespace {
+ SPEventContext* createTextContext() {
+ return new SPTextContext();
+ }
+
+ bool textContextRegistered = ToolFactory::instance().registerObject("/tools/text", createTextContext);
+}
+
+const std::string& CTextContext::getPrefsPath() {
+ return SPTextContext::prefsPath;
+}
+
const std::string SPTextContext::prefsPath = "/tools/text";
G_DEFINE_TYPE(SPTextContext, sp_text_context, SP_TYPE_EVENT_CONTEXT);
@@ -106,6 +116,7 @@ SPTextContext::SPTextContext() : SPEventContext() {
tc->ctextcontext = new CTextContext(tc);
delete tc->ceventcontext;
tc->ceventcontext = tc->ctextcontext;
+ types.insert(typeid(SPTextContext));
tc->preedit_string = 0;
tc->unipos = 0;
@@ -180,11 +191,6 @@ static void sp_text_context_dispose(GObject *obj)
Inkscape::Rubberband::get(ec->desktop)->stop();
}
-static void sp_text_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
void CTextContext::setup() {
SPEventContext* ec = this->speventcontext;
@@ -273,11 +279,6 @@ void CTextContext::setup() {
}
}
-static void sp_text_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
-}
-
void CTextContext::finish() {
SPEventContext* ec = this->speventcontext;
@@ -329,11 +330,6 @@ void CTextContext::finish() {
tc->text_selection_quads.clear();
}
-static gint sp_text_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
gint CTextContext::item_handler(SPItem* item, GdkEvent* event) {
SPEventContext* event_context = this->speventcontext;
@@ -399,7 +395,7 @@ gint CTextContext::item_handler(SPItem* item, GdkEvent* event) {
}
break;
case GDK_MOTION_NOTIFY:
- if (event->motion.state & GDK_BUTTON1_MASK && tc->dragging && !event_context->space_panning) {
+ if ((event->motion.state & GDK_BUTTON1_MASK) && tc->dragging && !event_context->space_panning) {
Inkscape::Text::Layout const *layout = te_get_layout(tc->text);
if (!layout) break;
// find out click point in document coordinates
@@ -592,11 +588,6 @@ static void show_curr_uni_char(SPTextContext *const tc)
}
}
-static gint sp_text_context_root_handler(SPEventContext *const event_context, GdkEvent *const event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
gint CTextContext::root_handler(GdkEvent* event) {
SPEventContext* event_context = this->speventcontext;
@@ -655,7 +646,7 @@ gint CTextContext::root_handler(GdkEvent* event) {
desktop->event_context->defaultMessageContext()->clear();
}
- if (tc->creating && event->motion.state & GDK_BUTTON1_MASK && !event_context->space_panning) {
+ if (tc->creating && (event->motion.state & GDK_BUTTON1_MASK) && !event_context->space_panning) {
if ( event_context->within_tolerance
&& ( abs( (gint) event->motion.x - event_context->xp ) < event_context->tolerance )
&& ( abs( (gint) event->motion.y - event_context->yp ) < event_context->tolerance ) ) {