+
+ if (from == to)
+ {
+ MPLIST_DO (markers, ic_info->markers)
+ if (MPLIST_INTEGER (markers) > from)
+ MPLIST_VAL (markers) = (void *) (MPLIST_INTEGER (markers) + ins);
+ if (ic->cursor_pos >= from)
+ ic->cursor_pos += ins;
+ }
+ else
+ {
+ MPLIST_DO (markers, ic_info->markers)
+ {
+ if (MPLIST_INTEGER (markers) >= to)
+ MPLIST_VAL (markers)
+ = (void *) (MPLIST_INTEGER (markers) + ins - (to - from));
+ else if (MPLIST_INTEGER (markers) > from)
+ MPLIST_VAL (markers) = (void *) from;
+ }
+ if (ic->cursor_pos >= to)
+ ic->cursor_pos += ins - (to - from);
+ else if (ic->cursor_pos > from)
+ ic->cursor_pos = from;
+ }
+}
+
+
+static void
+preedit_insert (MInputContext *ic, int pos, MText *mt, int c)
+{