From fa503753ddadce85653e8e42fc9cd67fc7e43628 Mon Sep 17 00:00:00 2001 From: Jan Lukas Gernert Date: Sat, 30 Jul 2016 03:20:52 +0200 Subject: [PATCH] fix compile error and segfault after cancel of dnd tag creation --- src/Widgets/FeedList.vala | 23 ++++++++++++++++++++++- src/Widgets/MainWindow.vala | 2 +- src/Widgets/TagRow.vala | 3 +-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/Widgets/FeedList.vala b/src/Widgets/FeedList.vala index e8b3f3662..5ab30234b 100644 --- a/src/Widgets/FeedList.vala +++ b/src/Widgets/FeedList.vala @@ -24,6 +24,7 @@ public class FeedReader.feedList : Gtk.Stack { private ServiceInfo m_branding; private uint m_expand_collapse_time = 150; private bool m_update = false; + private bool m_busy = false; private bool m_TagsDisplayed = false; public signal void newFeedSelected(string feedID); public signal void newTagSelected(string tagID); @@ -191,6 +192,14 @@ public class FeedReader.feedList : Gtk.Stack { public void newFeedlist(bool defaultSettings, bool masterCat = false) { logger.print(LogMessage.DEBUG, "FeedList: new FeedList"); + + if(m_busy) + { + logger.print(LogMessage.DEBUG, "FeedList: busy"); + return; + } + + m_busy = true; m_branding.refresh(); var FeedChildList = m_list.get_children(); @@ -215,6 +224,7 @@ public class FeedReader.feedList : Gtk.Stack { createFeedlist(defaultSettings, masterCat); settings_state.set_boolean("no-animations", false); m_update = false; + m_busy = false; } @@ -964,7 +974,18 @@ public class FeedReader.feedList : Gtk.Stack { public void removeEmptyTagRow() { logger.print(LogMessage.DEBUG, "removeEmptyTagRow"); - removeRow(m_emptyTagRow, 250); + + if(m_busy) + { + logger.print(LogMessage.DEBUG, "FeedList: busy"); + return; + } + + if(m_emptyTagRow != null) + { + removeRow(m_emptyTagRow, 250); + m_emptyTagRow = null; + } } public void deselectRow() diff --git a/src/Widgets/MainWindow.vala b/src/Widgets/MainWindow.vala index 5e7ce979a..671591fdd 100644 --- a/src/Widgets/MainWindow.vala +++ b/src/Widgets/MainWindow.vala @@ -590,7 +590,7 @@ public class FeedReader.readerUI : Gtk.ApplicationWindow m_ErrorMessage.set_label(_("No valid CA certificate available!")); m_ignore_tls_errors.set_visible(true); break; - case LoginResponse.CA_ERROR: + case LoginResponse.PLUGIN_NEEDED: m_ErrorMessage.set_label(_("Please install the \"api_feedreader\"-plugin on your tt-rss instance!")); m_ignore_tls_errors.set_visible(true); break; diff --git a/src/Widgets/TagRow.vala b/src/Widgets/TagRow.vala index d5ea72440..dc5bcb46b 100644 --- a/src/Widgets/TagRow.vala +++ b/src/Widgets/TagRow.vala @@ -255,12 +255,11 @@ public class FeedReader.TagRow : Gtk.ListBoxRow { this.unset_state_flags(Gtk.StateFlags.PRELIGHT); if(m_tagID == TagID.NEW && context != null) { - removeRow(); if(Utils.haveTags()) { var window = ((FeedApp)GLib.Application.get_default()).getWindow(); var feedlist = window.getContent().getFeedList(); - feedlist.newFeedlist(false, false); + //feedlist.newFeedlist(false, false); } Gtk.drag_finish(context, true, false, time); }