@@ -86,6 +86,7 @@ def connect_signals(self):
8686 self .connect_toolbar_action_signals ()
8787 self .connect_debugger_signals ()
8888 self .connect_expression_viewer_signals ()
89+ self .connect_stacktrace_viewer_signals ()
8990
9091 def connect_file_browser_signals (self ):
9192 """Connect file browser signals
@@ -195,6 +196,11 @@ def connect_expression_viewer_signals(self):
195196 self .handle_expression_added_or_changed
196197 )
197198
199+ def connect_stacktrace_viewer_signals (self ):
200+ self .stacktrace_viewer .item_double_clicked_signal .connect (
201+ self .handle_stacktrace_double_clicked
202+ )
203+
198204 def file_browser_item_activated (self , index ):
199205 """Handle when file browser item gets activated
200206
@@ -204,7 +210,7 @@ def file_browser_item_activated(self, index):
204210 if path is not None :
205211 self .open_document (path , False )
206212
207- def open_document (self , path , map_paths = True ):
213+ def open_document (self , path , map_paths = True , line = None ):
208214 """Open a document
209215
210216 If a document is not already open, open it and add it as a new
@@ -251,9 +257,18 @@ def open_document(self, path, map_paths=True):
251257 document_model .filename ,
252258 path
253259 )
260+
261+ # If a line is given, move to that line
262+ if line :
263+ document_widget .move_to_line (line )
254264 else :
255265 # Just focus the tab that has the opened document
256- self .document_viewer .focus_tab (path )
266+ index = self .document_viewer .find_tab_index_by_path (path )
267+ self .document_viewer .setCurrentIndex (index )
268+
269+ # If a line is given, move to that line
270+ if line :
271+ self .document_viewer .get_document (index ).move_to_line (line )
257272
258273 def handle_document_double_click (self , path , line_number ):
259274 """Handle when a document gets double clicked
@@ -644,6 +659,13 @@ def handle_expression_added_or_changed(self, index, expression):
644659 if self .debugger .is_connected ():
645660 self .debugger .evaluate_expression (index , expression )
646661
662+ def handle_stacktrace_double_clicked (self , file , line ):
663+ """Handle when an item in the stack trace viewer is double clicked.
664+
665+ Show the document, and scroll to the given line.
666+ """
667+ self .open_document (file , True , line )
668+
647669 def handle_error (self , error ):
648670 em = QErrorMessage (self .main_window )
649671 em .showMessage (error )
0 commit comments