From 1d05cf5e21d56294100d0dc87edd6a8139748a87 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 4 Jun 2015 21:46:35 +0200 Subject: [PATCH] Implement Ctrl-F3/Ctrl-Shift-F3 to search for current word/selection --- renderdocui/Windows/ShaderViewer.cs | 38 +++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/renderdocui/Windows/ShaderViewer.cs b/renderdocui/Windows/ShaderViewer.cs index f8d55c181..8e8041bd3 100644 --- a/renderdocui/Windows/ShaderViewer.cs +++ b/renderdocui/Windows/ShaderViewer.cs @@ -248,7 +248,7 @@ namespace renderdocui.Windows scintilla1.Tag = name; scintilla1.PreviewKeyDown += new PreviewKeyDownEventHandler(scintilla1_PreviewKeyDown); - scintilla1.KeyDown += new KeyEventHandler(scintilla1_KeyDown); + scintilla1.KeyDown += new KeyEventHandler(editScintilla_KeyDown); m_Scintillas.Add(scintilla1); @@ -280,12 +280,43 @@ namespace renderdocui.Windows this.ResumeLayout(false); } - void scintilla1_KeyDown(object sender, KeyEventArgs e) + void editScintilla_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.S && e.Control) { e.SuppressKeyPress = true; } + else + { + readonlyScintilla_KeyDown(sender, e); + } + } + + void readonlyScintilla_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.F3 && e.Control) + { + ScintillaNET.Range range = null; + + ScintillaNET.Scintilla sc = sender as ScintillaNET.Scintilla; + + if(sc != null) + { + string search = sc.GetWordFromPosition(sc.CurrentPos); + if (sc.Selection.Length > 0) + search = sc.Selection.Text; + + if (e.Shift) + range = sc.FindReplace.FindPrevious(search, true, ScintillaNET.SearchFlags.MatchCase); + else + range = sc.FindReplace.FindNext(search, true, ScintillaNET.SearchFlags.MatchCase); + + sc.FindReplace.ClearAllHighlights(); + sc.FindReplace.HighlightAll(sc.FindReplace.FindAll(search, ScintillaNET.SearchFlags.MatchCase)); + + sc.Selection.Range = range; + } + } } private HashSet m_Breakpoints = new HashSet(); @@ -441,6 +472,7 @@ namespace renderdocui.Windows m_DisassemblyView.TabIndex = 0; m_DisassemblyView.KeyDown += new KeyEventHandler(m_DisassemblyView_KeyDown); + m_DisassemblyView.KeyDown += new KeyEventHandler(readonlyScintilla_KeyDown); m_DisassemblyView.Markers[CURRENT_MARKER].BackColor = System.Drawing.Color.LightCoral; m_DisassemblyView.Markers[CURRENT_MARKER].Symbol = ScintillaNET.MarkerSymbol.Background; @@ -499,6 +531,8 @@ namespace renderdocui.Windows scintilla1.Tag = name; + scintilla1.KeyDown += new KeyEventHandler(readonlyScintilla_KeyDown); + var w = Helpers.WrapDockContent(dockPanel, scintilla1, name); w.CloseButton = false; w.CloseButtonVisible = false;