@@ -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
@@ -187,6 +188,11 @@ def connect_expression_viewer_signals(self):
187188 self .handle_expression_added_or_changed
188189 )
189190
191+ def connect_stacktrace_viewer_signals (self ):
192+ self .stacktrace_viewer .item_double_clicked_signal .connect (
193+ self .handle_stacktrace_double_clicked
194+ )
195+
190196 def file_browser_item_activated (self , index ):
191197 """Handle when file browser item gets activated
192198
@@ -196,7 +202,7 @@ def file_browser_item_activated(self, index):
196202 if path is not None :
197203 self .open_document (path , False )
198204
199- def open_document (self , path , map_paths = True ):
205+ def open_document (self , path , map_paths = True , line = None ):
200206 """Open a document
201207
202208 If a document is not already open, open it and add it as a new
@@ -243,9 +249,18 @@ def open_document(self, path, map_paths=True):
243249 document_model .filename ,
244250 path
245251 )
252+
253+ # If a line is given, move to that line
254+ if line :
255+ document_widget .move_to_line (line )
246256 else :
247257 # Just focus the tab that has the opened document
248- self .document_viewer .focus_tab (path )
258+ index = self .document_viewer .find_tab_index_by_path (path )
259+ self .document_viewer .setCurrentIndex (index )
260+
261+ # If a line is given, move to that line
262+ if line :
263+ self .document_viewer .get_document (index ).move_to_line (line )
249264
250265 def handle_document_double_click (self , path , line_number ):
251266 """Handle when a document gets double clicked
@@ -635,6 +650,13 @@ def handle_expression_added_or_changed(self, index, expression):
635650 if self .debugger .is_connected ():
636651 self .debugger .evaluate_expression (index , expression )
637652
653+ def handle_stacktrace_double_clicked (self , file , line ):
654+ """Handle when an item in the stack trace viewer is double clicked.
655+
656+ Show the document, and scroll to the given line.
657+ """
658+ self .open_document (file , True , line )
659+
638660 def handle_error (self , error ):
639661 em = QErrorMessage (self .main_window )
640662 em .showMessage (error )
0 commit comments