From 4547c7750062f6fc03f7cf7cb6ac0d76934f4300 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Sun, 5 Oct 2014 09:51:10 +0200 Subject: [PATCH] fixed a small bug where cursor iter is not transmitted to check_scroll --- data/ui/UberwriterWindow.ui | 7 +++++-- lipsum.md | 2 +- uberwriter/UberwriterSearchAndReplace.py | 18 +++++++++++++++++- uberwriter/UberwriterWindow.py | 7 +++++-- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/data/ui/UberwriterWindow.ui b/data/ui/UberwriterWindow.ui index 67e0fe2..7a6375c 100644 --- a/data/ui/UberwriterWindow.ui +++ b/data/ui/UberwriterWindow.ui @@ -370,7 +370,7 @@ True False 5 - 5 + 10 True @@ -389,6 +389,7 @@ False False 1 + 0 True @@ -486,12 +487,14 @@ True False 5 + 10 + 0 100 True False - 5 + 0 0 Replace with diff --git a/lipsum.md b/lipsum.md index 79b7a11..2fdba79 100644 --- a/lipsum.md +++ b/lipsum.md @@ -1,4 +1,4 @@ -### This is Lorem Ipsum +### This is Lorem ficksum asdja kdja dskj diff --git a/uberwriter/UberwriterSearchAndReplace.py b/uberwriter/UberwriterSearchAndReplace.py index 17955ee..7cee88c 100644 --- a/uberwriter/UberwriterSearchAndReplace.py +++ b/uberwriter/UberwriterSearchAndReplace.py @@ -34,6 +34,7 @@ class UberwriterSearchAndReplace(): self.searchentry = parentwindow.builder.get_object("searchentrybox") self.searchentry.connect('changed', self.search) self.searchentry.connect('activate', self.scrolltonext) + self.searchentry.connect('key-press-event', self.key_pressed) self.open_replace_button = parentwindow.builder.get_object("replace") self.open_replace_button.connect("toggled", self.toggle_replace) @@ -63,20 +64,29 @@ class UberwriterSearchAndReplace(): self.highlight = self.textbuffer.create_tag('search_highlight', background="yellow") + self.texteditor.connect("focus-in-event", self.focused_texteditor) def toggle_replace(self, widget, data=None): if widget.get_active(): self.replacebox.show_all() else: self.replacebox.hide() + def key_pressed(self, widget, event, data=None): + if event.keyval in [Gdk.KEY_Escape]: + self.hide() + + def focused_texteditor(self, widget, data=None): + self.hide() + def toggle_search(self, widget=None, data=None): """ show search box """ if self.box.get_visible(): - self.box.hide() + self.hide() else: self.box.show() + self.searchentry.grab_focus() def search(self, widget=None, data=None, scroll=True): searchtext = self.searchentry.get_text() @@ -129,7 +139,13 @@ class UberwriterSearchAndReplace(): # self.texteditor.scroll_to_iter(matchiter[0], 0.0, True, 0.0, 0.5) def hide(self): + self.replacebox.hide() self.box.hide() + self.textbuffer.remove_tag(self.highlight, + self.textbuffer.get_start_iter(), + self.textbuffer.get_end_iter()) + self.texteditor.grab_focus() + def replace_clicked(self, widget, data=None): self.replace(self.active) diff --git a/uberwriter/UberwriterWindow.py b/uberwriter/UberwriterWindow.py index 3401e75..e019ec6 100644 --- a/uberwriter/UberwriterWindow.py +++ b/uberwriter/UberwriterWindow.py @@ -226,10 +226,13 @@ class UberwriterWindow(Window): widget.get_vadjustment().props.value = pos return True # continue ticking - def check_scroll(self, mark): + def check_scroll(self, mark=None): gradient_offset = 80 buf = self.TextEditor.get_buffer() - ins_it = buf.get_iter_at_mark(mark) + if mark: + ins_it = buf.get_iter_at_mark(mark) + else: + ins_it = buf.get_iter_at_mark(buf.get_insert()) loc_rect = self.TextEditor.get_iter_location(ins_it) # alignment offset added from top