~bkidwell/zim/pyzim-win-installer

« back to all changes in this revision

Viewing changes to zim/gui/pageview.py

  • Committer: Jaap Karssenberg
  • Date: 2010-05-30 18:33:18 UTC
  • Revision ID: pardus@cpan.org-20100530183318-b1iiv8jlzkm3rzqb
Fixed bug with correct setting of edit mode
Caused e.g. heading tag to jump back at end-of-word in certain cases

Show diffs side-by-side

added added

removed removed

Lines of Context:
711
711
 
712
712
                if not name is None:
713
713
                        tag = self.get_tag_table().lookup('style-'+name)
 
714
                        if _is_heading_tag(tag):
 
715
                                self._editmode_tags = \
 
716
                                        filter(_is_not_indent_tag, self._editmode_tags)
714
717
                        self._editmode_tags = self._editmode_tags + (tag,)
715
718
 
716
719
                if not self._insert_tree_in_progress:
755
758
                # For example:
756
759
                # <indent level=1>foo\n</indent><cursor><indent level=2>bar</indent>
757
760
                #       in this case new text should get indent level 2 -> right gravity
 
761
                # <indent level=1>foo</indent><cursor><indent level=2>\nbar</indent>
 
762
                #       in this case new text should get indent level 1 -> left gravity
758
763
                # <indent level=1>foo\n</indent><indent level=2>bar</indent><cursor>\n
759
764
                #       in this case new text should also get indent level 2 -> left gravity
760
765
                start_tags = set(filter(_is_not_line_based_tag, iter.get_toggled_tags(True)))
763
768
                        iter.get_tags() )
764
769
 
765
770
                end_tags = filter(_is_zim_tag, iter.get_toggled_tags(False))
766
 
                if filter(_is_line_based_tag, tags):
767
 
                        # already have a right gravity line-based tag
 
771
                if iter.starts_line() and filter(_is_line_based_tag, tags):
 
772
                        # we have a right gravity line-based tag for this line
768
773
                        end_tags = filter(_is_not_line_based_tag, end_tags)
 
774
                elif filter(_is_line_based_tag, end_tags):
 
775
                        # else take line based tags from left side current line
 
776
                        tags = filter(_is_not_line_based_tag, tags)
769
777
                tags.extend(end_tags)
770
778
 
771
779
                tags.sort(key=lambda tag: tag.get_priority())