mirror of
https://github.com/tromey/gdb-gui.git
synced 2025-12-16 07:10:04 +01:00
use before_prompt hook to notify the frame_changed event
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2013 Tom Tromey <tom@tromey.com>
|
||||
# Copyright (C) 2013, 2015 Tom Tromey <tom@tromey.com>
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -20,3 +20,4 @@ self_dir = os.path.abspath(os.path.dirname(__file__))
|
||||
# Import anything that defines a command or parameter.
|
||||
import gui.commands
|
||||
import gui.toplevel
|
||||
import gui.framecache
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2012, 2013 Tom Tromey <tom@tromey.com>
|
||||
# Copyright (C) 2012, 2013, 2015 Tom Tromey <tom@tromey.com>
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -206,7 +206,10 @@ class TestCommand(gdb.Command):
|
||||
TestCommand(True)
|
||||
TestCommand(False).invoke('', 0)
|
||||
|
||||
if _can_override:
|
||||
# See framecache.py - we prefer the before_prompt event if it exists;
|
||||
# but otherwise try the overriding approach. Both of these rely on a
|
||||
# hacked gdb :-(
|
||||
if _can_override and not hasattr(gdb.events, 'before_prompt'):
|
||||
class Overrider(gdb.Command):
|
||||
def __init__(self, name, event):
|
||||
super(Overrider, self).__init__(name, gdb.COMMAND_DATA)
|
||||
|
||||
34
gui/framecache.py
Normal file
34
gui/framecache.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# Copyright (C) 2015 Tom Tromey <tom@trolley.com>
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import gdb
|
||||
import gui.events
|
||||
|
||||
_last_selected_frame = None
|
||||
|
||||
def check_frame():
|
||||
global _last_selected_frame
|
||||
sel = None
|
||||
try:
|
||||
sel = gdb.selected_frame()
|
||||
except:
|
||||
pass
|
||||
if _last_selected_frame is not sel:
|
||||
_last_selected_frame = sel
|
||||
gui.events.frame_changed.post()
|
||||
|
||||
# See my gdb branch on github.
|
||||
if hasattr(gdb.events, 'before_prompt'):
|
||||
gdb.events.before_prompt.connect(check_frame)
|
||||
Reference in New Issue
Block a user