fix(popouts): the context menu never opened outside the main window
Right-clicking a name or an item inside a pop-out did nothing at all. One payload handler is shared by the main window, every pop-out and the input preview, and it holds a single popup state. The main window is registered first, so it draws first, finds no open popup in its own scope, reads that as "closed" and clears the state -- before the window that actually opened the popup gets its turn. The popup now belongs to the surface that opened it. The others leave its state alone instead of dropping it. The rule itself sits in its own helper because the handler pulls in Dalamud and cannot be loaded from a test.
This commit is contained in:
@@ -158,6 +158,11 @@ internal sealed class MessageList
|
||||
return;
|
||||
}
|
||||
|
||||
// Claim the shared handler, so a popup opened here stays with this
|
||||
// window instead of being cleared by whichever surface draws first.
|
||||
if (_handler is not null)
|
||||
_handler.ActiveSurface = this;
|
||||
|
||||
// No own ImRaii.Child here — MainWindow already wraps the message
|
||||
// area in one. Nesting would give the window two stacked scrolls
|
||||
// and a runaway content-height computation.
|
||||
|
||||
@@ -175,6 +175,7 @@ internal sealed class InputPreview : Window
|
||||
_handlerLender.ResetCounter();
|
||||
|
||||
var handler = _handlerLender.Borrow();
|
||||
handler.ActiveSurface = this;
|
||||
_chunkRenderer.DrawChunks(
|
||||
_previewMessage!.Content,
|
||||
wrap: true,
|
||||
|
||||
Reference in New Issue
Block a user