binutils-gdb/gdb/python
Andrew Burgess ee89a3c9ef gdb/python: new selected_context event
This commit introduces a new Python event, selected_context.  This
event is attached to the user_selected_context_changed observer, which
triggers when the user changes the currently selected inferior,
thread, or frame.

Adding this event allows a Python extension to update in response to
user driven changes without having to poll the state from a
before_prompt hook, which is what I currently do to achieve the same
results.

I did consider splitting the user_selected_context_changed observer
into 3 separate Python events, inferior_changed, thread_changed, and
frame_changed, but I couldn't see any significant advantage to doing
this, so in the end I went with just a single event, and the event
object contains the inferior, thread, and frame.

Additionally, the user isn't informed about which aspect of the
context changed.  That is, every event carries the inferior, thread,
and frame, so an event triggered when switching frames will looks
identical to an event triggered when switching inferiors.  If the user
wants to know what changed then they will have to track the current
state themselves, and then compare the event state to the stored
current state.  In many cases though I suspect that just being told
something changed, and then updating everything will be sufficient,
which is why I've not bothered trying to inform the user what changed.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=24482

Reviewed-By: Eli Zaretskii <eliz@gnu.org>
Approved-By: Tom Tromey <tom@tromey.com>
2026-03-05 09:42:18 +00:00
..
lib/gdb Update black to 26.1.0 2026-01-23 06:45:46 -07:00
py-all-events.def gdb/python: new selected_context event 2026-03-05 09:42:18 +00:00
py-arch.c Return gdbpy_ref<> from gdbarch_to_arch_object 2026-02-23 05:29:12 -07:00
py-auto-load.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-block.c Return gdbpy_ref<> from block_to_block_object 2026-02-23 05:29:11 -07:00
py-bpevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-breakpoint.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-cmd.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-color.c Use ref_ptr upcasts in Python code 2026-03-04 10:09:33 -07:00
py-color.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-connection.c Use ref_ptr upcasts in Python code 2026-03-04 10:09:33 -07:00
py-continueevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-corefile.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-dap.c Rewrite output redirection and logging 2026-02-09 08:15:44 -07:00
py-disasm.c Use the "O!" format more in the Python code 2026-02-27 12:01:56 -07:00
py-event-types.def gdb/python: new selected_context event 2026-03-05 09:42:18 +00:00
py-event.c Use ref_ptr upcasts in Python code 2026-03-04 10:09:33 -07:00
py-event.h gdb: new setters and getters for __dict__, and attributes 2026-01-29 16:46:14 +00:00
py-events.h gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-evtregistry.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-evts.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-exitedevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-finishbreakpoint.c Return gdbpy_ref<> from value_to_value_object 2026-02-23 05:29:11 -07:00
py-frame.c Use ref_ptr upcasts in Python code 2026-03-04 10:09:33 -07:00
py-framefilter.c Return gdbpy_ref<> from frame_info_to_frame_object 2026-02-23 05:29:12 -07:00
py-function.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
py-gdb-readline.c Python limited API: migrate Py_CompileStringExFlags and PyRun_SimpleString 2026-01-28 09:41:25 +00:00
py-inferior.c gdb/python: new selected_context event 2026-03-05 09:42:18 +00:00
py-infevents.c Return gdbpy_ref<> from frame_info_to_frame_object 2026-02-23 05:29:12 -07:00
py-infthread.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
py-instruction.c gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-instruction.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-lazy-string.c Return gdbpy_ref<> from type_to_type_object 2026-02-23 05:29:12 -07:00
py-linetable.c Return gdbpy_ref<> from symtab_to_linetable_object 2026-02-23 05:29:12 -07:00
py-membuf.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-mi.c gdb: switch sequence protocol helpers to Python limited API equivalents 2026-02-27 11:38:57 +00:00
py-micmd.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-newobjfileevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-objfile.c gdb/python: remove some unreachable Py_RETURN_NONE 2026-02-23 08:21:46 -05:00
py-param.c gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-prettyprint.c gdb: switch bytes object helpers to Python limited API equivalents 2026-03-04 15:38:28 +00:00
py-progspace.c Return gdbpy_ref<> from block_to_block_object 2026-02-23 05:29:11 -07:00
py-record-btrace.c Use the "O!" format more in the Python code 2026-02-27 12:01:56 -07:00
py-record-btrace.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-record-full.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-record-full.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-record.c gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-record.h gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-ref.h Don't use template for gdbpy_ref_policy 2026-03-04 10:07:33 -07:00
py-registers.c Use ref_ptr upcasts in Python code 2026-03-04 10:09:33 -07:00
py-signalevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-stopevent.c Return gdbpy_ref<> from value_to_value_object 2026-02-23 05:29:11 -07:00
py-stopevent.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-style.c gdb: make remaining Python extension objects inherit from PyObject 2026-01-29 16:46:14 +00:00
py-symbol.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
py-symtab.c Return gdbpy_ref<> from gdbpy_registry::lookup 2026-02-23 05:29:12 -07:00
py-threadevent.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-tui.c gdb: cast all Python extension objects passed to gdbpy_ref_policy to PyObject* 2026-01-29 16:46:14 +00:00
py-type.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
py-uiout.h Remove m_applied_style from ui_file 2026-02-09 08:15:29 -07:00
py-unwind.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
py-utils.c gdb: new setters and getters for __dict__, and attributes 2026-01-29 16:46:14 +00:00
py-value.c Return gdbpy_ref<> from type_to_type_object 2026-02-23 05:29:12 -07:00
py-varobj.c Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00
py-xmethods.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
python-config.py Run isort 2024-04-02 11:21:39 -06:00
python-internal.h Return gdbpy_ref<> from gdbpy_registry::lookup 2026-02-23 05:29:12 -07:00
python.c gdb: switch tuple object helpers to Python limited API equivalents 2026-03-04 15:38:11 +00:00
python.h Update copyright dates to include 2026 2026-01-05 13:16:46 -07:00