+void Entry::adjust_edit_position_for_change(unsigned pos, int change)
+{
+ unsigned old_edit_pos = edit_pos;
+
+ if(change>0)
+ {
+ if(edit_pos>=pos)
+ edit_pos += change;
+ if(selection_active && selection_pos>=pos)
+ selection_pos += change;
+ }
+ else if(change<0)
+ {
+ if(edit_pos>=pos)
+ edit_pos -= min<unsigned>(edit_pos-pos, -change);
+ if(selection_active)
+ selection_pos -= min<unsigned>(selection_pos-pos, -change);
+ }
+
+ if(edit_pos!=old_edit_pos)
+ signal_edit_position_changed.emit(edit_pos);
+}
+