Skip to content

Commit 003ee1c

Browse files
authored
Merge pull request #559 from LogExperts/112-bug-bookmarks-are-not-working-for-highlight-triggers
Update Bookmark trigger functionality
2 parents a867284 + 9b27b82 commit 003ee1c

6 files changed

Lines changed: 455 additions & 67 deletions

File tree

src/LogExpert.Core/Classes/Bookmark/BookmarkDataProvider.cs

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class BookmarkDataProvider : IBookmarkData
1313

1414
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
1515

16+
private readonly Lock _bookmarkListLock = new();
17+
1618
#endregion
1719

1820
#region cTor
@@ -49,7 +51,10 @@ public BookmarkDataProvider (SortedList<int, Entities.Bookmark> bookmarkList)
4951

5052
public void SetBookmarks (SortedList<int, Entities.Bookmark> bookmarkList)
5153
{
52-
BookmarkList = bookmarkList;
54+
lock (_bookmarkListLock)
55+
{
56+
BookmarkList = bookmarkList;
57+
}
5358
}
5459

5560
public void ToggleBookmark (int lineNum)
@@ -66,17 +71,26 @@ public void ToggleBookmark (int lineNum)
6671

6772
public bool IsBookmarkAtLine (int lineNum)
6873
{
69-
return BookmarkList.ContainsKey(lineNum);
74+
lock (_bookmarkListLock)
75+
{
76+
return BookmarkList.ContainsKey(lineNum);
77+
}
7078
}
7179

7280
public int GetBookmarkIndexForLine (int lineNum)
7381
{
74-
return BookmarkList.IndexOfKey(lineNum);
82+
lock (_bookmarkListLock)
83+
{
84+
return BookmarkList.IndexOfKey(lineNum);
85+
}
7586
}
7687

7788
public Entities.Bookmark GetBookmarkForLine (int lineNum)
7889
{
79-
return BookmarkList[lineNum];
90+
lock (_bookmarkListLock)
91+
{
92+
return BookmarkList[lineNum];
93+
}
8094
}
8195

8296
#endregion
@@ -116,6 +130,7 @@ public int FindPrevBookmarkIndex (int lineNum)
116130

117131
public int FindNextBookmarkIndex (int lineNum)
118132
{
133+
119134
var values = BookmarkList.Values;
120135
for (var i = 0; i < BookmarkList.Count; ++i)
121136
{
@@ -130,19 +145,25 @@ public int FindNextBookmarkIndex (int lineNum)
130145

131146
public void RemoveBookmarkForLine (int lineNum)
132147
{
133-
_ = BookmarkList.Remove(lineNum);
148+
lock (_bookmarkListLock)
149+
{
150+
_ = BookmarkList.Remove(lineNum);
151+
}
152+
134153
OnBookmarkRemoved();
135154
}
136155

137156
//TOOD: check if the callers are checking for null before calling
138157
public void RemoveBookmarksForLines (IEnumerable<int> lineNumList)
139158
{
140159
ArgumentNullException.ThrowIfNull(lineNumList, nameof(lineNumList));
141-
142-
foreach (var lineNum in lineNumList)
160+
lock (_bookmarkListLock)
143161
{
144-
_ = BookmarkList.Remove(lineNum);
162+
foreach (var lineNum in lineNumList)
163+
{
164+
_ = BookmarkList.Remove(lineNum);
145165

166+
}
146167
}
147168

148169
OnBookmarkRemoved();
@@ -152,20 +173,31 @@ public void RemoveBookmarksForLines (IEnumerable<int> lineNumList)
152173
public void AddBookmark (Entities.Bookmark bookmark)
153174
{
154175
ArgumentNullException.ThrowIfNull(bookmark, nameof(bookmark));
176+
lock (_bookmarkListLock)
177+
{
178+
BookmarkList.Add(bookmark.LineNum, bookmark);
179+
}
155180

156-
BookmarkList.Add(bookmark.LineNum, bookmark);
157181
OnBookmarkAdded();
158182
}
159183

160184
public void ClearAllBookmarks ()
161185
{
186+
#if DEBUG
162187
_logger.Debug(CultureInfo.InvariantCulture, "Removing all bookmarks");
163-
BookmarkList.Clear();
188+
#endif
189+
lock (_bookmarkListLock)
190+
{
191+
BookmarkList.Clear();
192+
}
193+
164194
OnAllBookmarksRemoved();
165195
}
166196

167197
#endregion
168198

199+
#region Event invokers
200+
169201
protected void OnBookmarkAdded ()
170202
{
171203
BookmarkAdded?.Invoke(this, EventArgs.Empty);
@@ -180,4 +212,7 @@ protected void OnAllBookmarksRemoved ()
180212
{
181213
AllBookmarksRemoved?.Invoke(this, EventArgs.Empty);
182214
}
215+
216+
#endregion
217+
183218
}

src/LogExpert.Core/Classes/Filter/FilterParams.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ public class FilterParams : ICloneable
8686

8787
///Returns RangeSearchText.ToUpperInvariant
8888
[JsonIgnore]
89-
internal string NormalizedRangeSearchText => RangeSearchText.ToUpperInvariant();
89+
internal string NormalizedRangeSearchText => RangeSearchText?.ToUpperInvariant();
9090

9191
///Returns SearchText.ToUpperInvariant
9292
[JsonIgnore]
93-
internal string NormalizedSearchText => SearchText.ToUpperInvariant();
93+
internal string NormalizedSearchText => SearchText?.ToUpperInvariant();
9494

9595
[JsonIgnore]
9696
[field: NonSerialized]

src/LogExpert.Core/Entities/LogEventData.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
namespace LogExpert.Core.Entities;
1+
namespace LogExpert.Core.Entities;
22

3-
public class LogEventArgs : System.EventArgs
3+
public class LogEventArgs : EventArgs
44
{
55
#region Fields
66

0 commit comments

Comments
 (0)