mirror of
https://github.com/tromey/gdb-gui.git
synced 2025-07-21 21:11:25 +02:00
@@ -36,6 +36,9 @@ class BufferManager:
|
|||||||
self.lang_manager = None
|
self.lang_manager = None
|
||||||
gui.params.source_theme.set_buffer_manager(self)
|
gui.params.source_theme.set_buffer_manager(self)
|
||||||
gui.events.location_changed.connect(self._location_changed)
|
gui.events.location_changed.connect(self._location_changed)
|
||||||
|
# FIXME - emit a warning if this isn't available.
|
||||||
|
if hasattr(gdb.events, 'clear_objfiles'):
|
||||||
|
gdb.events.clear_objfiles.connect(self._clear_objfiles)
|
||||||
|
|
||||||
def release_buffer(self, buff):
|
def release_buffer(self, buff):
|
||||||
# FIXME: we should be smart about buffer caching.
|
# FIXME: we should be smart about buffer caching.
|
||||||
@@ -113,6 +116,16 @@ class BufferManager:
|
|||||||
gui.startup.send_to_gtk(lambda: self.update_breakpoint_location(loc,
|
gui.startup.send_to_gtk(lambda: self.update_breakpoint_location(loc,
|
||||||
is_set))
|
is_set))
|
||||||
|
|
||||||
|
@in_gtk_thread
|
||||||
|
def _gtk_clear_objfiles(self):
|
||||||
|
for window in gui.toplevel.state.windows():
|
||||||
|
window.clear_source()
|
||||||
|
self.buffers = {}
|
||||||
|
|
||||||
|
@in_gdb_thread
|
||||||
|
def _clear_objfiles(self, ignore):
|
||||||
|
gui.startup.send_to_gtk(self._gtk_clear_objfiles)
|
||||||
|
|
||||||
buffer_manager = BufferManager()
|
buffer_manager = BufferManager()
|
||||||
|
|
||||||
# Return (FRAME, SYMTAB, FILE, LINE) for the selected frame, or, if
|
# Return (FRAME, SYMTAB, FILE, LINE) for the selected frame, or, if
|
||||||
@@ -178,6 +191,8 @@ class LRUHandler:
|
|||||||
def _connect_events(self):
|
def _connect_events(self):
|
||||||
gdb.events.stop.connect(self.on_event)
|
gdb.events.stop.connect(self.on_event)
|
||||||
gui.events.frame_changed.connect(self.on_event)
|
gui.events.frame_changed.connect(self.on_event)
|
||||||
|
if hasattr(gdb.events, 'new_objfile'):
|
||||||
|
gdb.events.new_objfile.connect(self._new_objfile)
|
||||||
|
|
||||||
@in_gdb_thread
|
@in_gdb_thread
|
||||||
def _disconnect_events(self):
|
def _disconnect_events(self):
|
||||||
@@ -231,6 +246,11 @@ class LRUHandler:
|
|||||||
filename,
|
filename,
|
||||||
lineno))
|
lineno))
|
||||||
|
|
||||||
|
@in_gdb_thread
|
||||||
|
def _new_objfile(self, event):
|
||||||
|
if len(gdb.objfiles()) == 1:
|
||||||
|
self.on_event()
|
||||||
|
|
||||||
lru_handler = LRUHandler()
|
lru_handler = LRUHandler()
|
||||||
|
|
||||||
BUTTON_NAMES = ["step", "next", "continue", "finish", "stop", "up", "down"]
|
BUTTON_NAMES = ["step", "next", "continue", "finish", "stop", "up", "down"]
|
||||||
@@ -349,3 +369,9 @@ class SourceWindow(gui.updatewindow.UpdateWindow):
|
|||||||
@in_gtk_thread
|
@in_gtk_thread
|
||||||
def set_tab_width(self, width):
|
def set_tab_width(self, width):
|
||||||
self.view.set_tab_width(width)
|
self.view.set_tab_width(width)
|
||||||
|
|
||||||
|
@in_gtk_thread
|
||||||
|
def clear_source(self):
|
||||||
|
old_buffer = self.view.get_buffer()
|
||||||
|
self.view.set_buffer(None)
|
||||||
|
buffer_manager.release_buffer(old_buffer)
|
||||||
|
@@ -189,3 +189,7 @@ class Toplevel(object):
|
|||||||
@in_gtk_thread
|
@in_gtk_thread
|
||||||
def set_tab_width(self, width):
|
def set_tab_width(self, width):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@in_gtk_thread
|
||||||
|
def clear_source(self):
|
||||||
|
pass
|
||||||
|
Reference in New Issue
Block a user