38 lines
1.5 KiB
Go
38 lines
1.5 KiB
Go
// Copyright (c) 2026 Storm Dragon
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
package remote
|
|
|
|
import (
|
|
"git.stormux.org/storm/cthulhu/internal/atspi"
|
|
"git.stormux.org/storm/cthulhu/internal/wine"
|
|
"github.com/godbus/dbus/v5"
|
|
)
|
|
|
|
// Optional so legacy handlers and Orca exports retain their existing contract.
|
|
type WineReviewHandler interface {
|
|
RegisterProvider(string, dbus.ObjectPath, uint32) bool
|
|
PresentFocus(string, wine.ReviewFocusNotice) bool
|
|
}
|
|
type WineReviewConnectionHandler interface{ BindWineReviewConnection(*dbus.Conn) }
|
|
|
|
func (e *endpoint) RegisterWineReviewProvider(sender dbus.Sender, path dbus.ObjectPath, version uint32) (bool, *dbus.Error) {
|
|
if err := e.begin(sender, "RegisterWineReviewProvider"); err != nil {
|
|
return false, err
|
|
}
|
|
defer e.end()
|
|
if handler, ok := e.handler.(WineReviewHandler); ok {
|
|
return handler.RegisterProvider(string(sender), path, version), nil
|
|
}
|
|
return false, nil
|
|
}
|
|
func (e *endpoint) PresentWineReviewFocus(sender dbus.Sender, instance, window, focus string, revision uint64, title, role string, protected bool, bounds atspi.Rectangle) (bool, *dbus.Error) {
|
|
if err := e.begin(sender, "PresentWineReviewFocus"); err != nil {
|
|
return false, err
|
|
}
|
|
defer e.end()
|
|
if handler, ok := e.handler.(WineReviewHandler); ok {
|
|
return handler.PresentFocus(string(sender), wine.ReviewFocusNotice{Instance: instance, Window: window, Focus: focus, Revision: revision, Title: title, Role: role, Protected: protected, Bounds: bounds}), nil
|
|
}
|
|
return false, nil
|
|
}
|