Index: ChangeLog =================================================================== RCS file: /cvs/gnome/gedit/ChangeLog,v retrieving revision 1.799 diff -u -p -r1.799 ChangeLog --- ChangeLog 5 Aug 2006 07:43:10 -0000 1.799 +++ ChangeLog 5 Aug 2006 08:30:56 -0000 @@ -1,5 +1,12 @@ 2006-08-05 Jesse van den Kieboom + * gedit/gedit-window.c: added calling update_ui when editability + changes + * plugins/snippets/snippets/SnippetController.py: added honoring the + editability of the buffer + +2006-08-05 Jesse van den Kieboom + * plugins/filebrowser/gedit-file-browser-plugin.c: Fixed restoring of remote location (problem introduced by previous Index: gedit/gedit-window.c =================================================================== RCS file: /cvs/gnome/gedit/gedit/gedit-window.c,v retrieving revision 1.30 diff -u -p -r1.30 gedit-window.c --- gedit/gedit-window.c 18 Jun 2006 09:05:20 -0000 1.30 +++ gedit/gedit-window.c 5 Aug 2006 08:30:56 -0000 @@ -2268,6 +2268,14 @@ doc_saved (GeditDocument *doc, } static void +editable_changed (GeditView *view, + GParamSpec *arg1, + GeditWindow *window) +{ + gedit_plugins_engine_update_plugins_ui (window, FALSE); +} + +static void notebook_tab_added (GeditNotebook *notebook, GeditTab *tab, GeditWindow *window) @@ -2344,6 +2352,10 @@ notebook_tab_added (GeditNotebook *noteb "toggle_overwrite", G_CALLBACK (update_overwrite_mode_statusbar), window); + g_signal_connect (view, + "notify::editable", + G_CALLBACK (editable_changed), + window); update_documents_list_menu (window); @@ -2427,6 +2439,9 @@ notebook_tab_removed (GeditNotebook *not window); g_signal_handlers_disconnect_by_func (view, G_CALLBACK (update_overwrite_mode_statusbar), + window); + g_signal_handlers_disconnect_by_func (view, + G_CALLBACK (editable_changed), window); g_signal_handlers_disconnect_by_func (view, G_CALLBACK (drag_data_received_cb), Index: plugins/snippets/snippets/SnippetController.py =================================================================== RCS file: /cvs/gnome/gedit/plugins/snippets/snippets/SnippetController.py,v retrieving revision 1.11 diff -u -p -r1.11 SnippetController.py --- plugins/snippets/snippets/SnippetController.py 24 Jul 2006 20:31:44 -0000 1.11 +++ plugins/snippets/snippets/SnippetController.py 5 Aug 2006 08:30:56 -0000 @@ -68,16 +68,14 @@ class SnippetController: # all currently active snippets and disconnect all current signals. So # self.set_view(None) will effectively remove all the control from the # current view - def set_view(self, view): - if view == self.view: - return - + def _set_view(self, view): if self.view: buf = self.view.get_buffer() self.disconnect_signal(self.view, 'key-press-event') self.disconnect_signal(self.view, 'destroy') self.disconnect_signal(buf, 'notify::language') + self.disconnect_signal(self.view, 'notify::editable') self.disconnect_signal(buf, 'changed') self.disconnect_signal(buf, 'cursor-moved') @@ -92,14 +90,25 @@ class SnippetController: self.signal_ids['destroy'] = view.connect('destroy', \ self.on_view_destroy) - self.signal_ids['key-press-event'] = view.connect( \ - 'key_press_event', self.on_view_key_press) + + if view.get_editable(): + self.signal_ids['key-press-event'] = view.connect( \ + 'key_press_event', self.on_view_key_press) + self.signal_ids['notify::language'] = buf.connect( \ 'notify::language', self.on_notify_language) + self.signal_ids['notify::editable'] = view.connect( \ + 'notify::editable', self.on_notify_editable) self.update_language() elif self.language_id != 0: SnippetsLibrary().unref(self.language_id) + + def set_view(self, view): + if view == self.view: + return + + self._set_view(view) # Call this whenever the language in the view changes. This makes sure that # the correct language is used when finding snippets @@ -123,6 +132,9 @@ class SnippetController: SnippetsLibrary().ref(self.language_id) def accelerator_activate(self, keyval, mod): + if not self.view or not self.view.get_editable(): + return + accelerator = gtk.accelerator_name(keyval, mod) snippets = SnippetsLibrary().from_accelerator(accelerator, \ self.language_id) @@ -606,7 +618,10 @@ class SnippetController: def on_notify_language(self, buf, spec): self.update_language() - + + def on_notify_editable(self, view, spec): + self._set_view(view) + def on_view_key_press(self, view, event): library = SnippetsLibrary()