mirror of
https://github.com/m1k1o/neko.git
synced 2024-07-24 14:40:50 +12:00
file chooser dialog diabled by default.
This commit is contained in:
parent
d9bcde3331
commit
b40c0778c8
@ -87,6 +87,10 @@ func (h *RoomHandler) uploadDrop(w http.ResponseWriter, r *http.Request) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *RoomHandler) uploadDialogPost(w http.ResponseWriter, r *http.Request) error {
|
func (h *RoomHandler) uploadDialogPost(w http.ResponseWriter, r *http.Request) error {
|
||||||
|
if !h.desktop.IsFileChooserDialogEnabled() {
|
||||||
|
return utils.HttpBadRequest("file chooser dialog is disabled")
|
||||||
|
}
|
||||||
|
|
||||||
err := r.ParseMultipartForm(maxUploadSize)
|
err := r.ParseMultipartForm(maxUploadSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return utils.HttpBadRequest("failed to parse multipart form").WithInternalErr(err)
|
return utils.HttpBadRequest("failed to parse multipart form").WithInternalErr(err)
|
||||||
@ -150,6 +154,10 @@ func (h *RoomHandler) uploadDialogPost(w http.ResponseWriter, r *http.Request) e
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *RoomHandler) uploadDialogClose(w http.ResponseWriter, r *http.Request) error {
|
func (h *RoomHandler) uploadDialogClose(w http.ResponseWriter, r *http.Request) error {
|
||||||
|
if !h.desktop.IsFileChooserDialogEnabled() {
|
||||||
|
return utils.HttpBadRequest("file chooser dialog is disabled")
|
||||||
|
}
|
||||||
|
|
||||||
if !h.desktop.IsFileChooserDialogOpened() {
|
if !h.desktop.IsFileChooserDialogOpened() {
|
||||||
return utils.HttpUnprocessableEntity("file chooser dialog is not open")
|
return utils.HttpUnprocessableEntity("file chooser dialog is not open")
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ type Desktop struct {
|
|||||||
InputSocket string
|
InputSocket string
|
||||||
|
|
||||||
Unminimize bool
|
Unminimize bool
|
||||||
|
FileChooserDialog bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (Desktop) Init(cmd *cobra.Command) error {
|
func (Desktop) Init(cmd *cobra.Command) error {
|
||||||
@ -43,6 +44,11 @@ func (Desktop) Init(cmd *cobra.Command) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd.PersistentFlags().Bool("desktop.file_chooser_dialog", false, "whether to handle file chooser dialog externally")
|
||||||
|
if err := viper.BindPFlag("desktop.file_chooser_dialog", cmd.PersistentFlags().Lookup("desktop.file_chooser_dialog")); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,4 +80,5 @@ func (s *Desktop) Set() {
|
|||||||
s.UseInputDriver = viper.GetBool("desktop.input.enabled")
|
s.UseInputDriver = viper.GetBool("desktop.input.enabled")
|
||||||
s.InputSocket = viper.GetString("desktop.input.socket")
|
s.InputSocket = viper.GetString("desktop.input.socket")
|
||||||
s.Unminimize = viper.GetBool("desktop.unminimize")
|
s.Unminimize = viper.GetBool("desktop.unminimize")
|
||||||
|
s.FileChooserDialog = viper.GetBool("desktop.file_chooser_dialog")
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,10 @@ func (manager *DesktopManagerCtx) CloseFileChooserDialog() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (manager *DesktopManagerCtx) IsFileChooserDialogEnabled() bool {
|
||||||
|
return manager.config.FileChooserDialog
|
||||||
|
}
|
||||||
|
|
||||||
func (manager *DesktopManagerCtx) IsFileChooserDialogOpened() bool {
|
func (manager *DesktopManagerCtx) IsFileChooserDialogOpened() bool {
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
defer mu.Unlock()
|
defer mu.Unlock()
|
||||||
|
@ -71,11 +71,15 @@ func (manager *DesktopManagerCtx) Start() {
|
|||||||
manager.logger.Panic().Err(err).Msg("unable to connect to input driver")
|
manager.logger.Panic().Err(err).Msg("unable to connect to input driver")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set up event listeners
|
||||||
xevent.Unminimize = manager.config.Unminimize
|
xevent.Unminimize = manager.config.Unminimize
|
||||||
|
xevent.FileChooserDialog = manager.config.FileChooserDialog
|
||||||
go xevent.EventLoop(manager.config.Display)
|
go xevent.EventLoop(manager.config.Display)
|
||||||
|
|
||||||
// In case it was opened
|
// in case it was opened
|
||||||
|
if manager.config.FileChooserDialog {
|
||||||
go manager.CloseFileChooserDialog()
|
go manager.CloseFileChooserDialog()
|
||||||
|
}
|
||||||
|
|
||||||
manager.OnEventError(func(error_code uint8, message string, request_code uint8, minor_code uint8) {
|
manager.OnEventError(func(error_code uint8, message string, request_code uint8, minor_code uint8) {
|
||||||
manager.logger.Warn().
|
manager.logger.Warn().
|
||||||
|
@ -167,7 +167,9 @@ func (manager *WebSocketManagerCtx) Start() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if manager.desktop.IsFileChooserDialogEnabled() {
|
||||||
manager.fileChooserDialogEvents()
|
manager.fileChooserDialogEvents()
|
||||||
|
}
|
||||||
|
|
||||||
if manager.sessions.Settings().InactiveCursors {
|
if manager.sessions.Settings().InactiveCursors {
|
||||||
manager.startInactiveCursors()
|
manager.startInactiveCursors()
|
||||||
|
@ -98,5 +98,6 @@ type DesktopManager interface {
|
|||||||
// filechooser
|
// filechooser
|
||||||
HandleFileChooserDialog(uri string) error
|
HandleFileChooserDialog(uri string) error
|
||||||
CloseFileChooserDialog()
|
CloseFileChooserDialog()
|
||||||
|
IsFileChooserDialogEnabled() bool
|
||||||
IsFileChooserDialogOpened() bool
|
IsFileChooserDialogOpened() bool
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,8 @@ import (
|
|||||||
|
|
||||||
var Emmiter events.EventEmmiter
|
var Emmiter events.EventEmmiter
|
||||||
var Unminimize bool = false
|
var Unminimize bool = false
|
||||||
var file_chooser_dialog_window uint32 = 0
|
var FileChooserDialog bool = false
|
||||||
|
var fileChooserDialogWindow uint32 = 0
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Emmiter = events.New()
|
Emmiter = events.New()
|
||||||
@ -41,7 +42,7 @@ func goXEventClipboardUpdated() {
|
|||||||
|
|
||||||
//export goXEventConfigureNotify
|
//export goXEventConfigureNotify
|
||||||
func goXEventConfigureNotify(display *C.Display, window C.Window, name *C.char, role *C.char) {
|
func goXEventConfigureNotify(display *C.Display, window C.Window, name *C.char, role *C.char) {
|
||||||
if C.GoString(role) != "GtkFileChooserDialog" {
|
if C.GoString(role) != "GtkFileChooserDialog" || !FileChooserDialog {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,19 +54,19 @@ func goXEventConfigureNotify(display *C.Display, window C.Window, name *C.char,
|
|||||||
|
|
||||||
C.XFileChooserHide(display, window)
|
C.XFileChooserHide(display, window)
|
||||||
|
|
||||||
if file_chooser_dialog_window == 0 {
|
if fileChooserDialogWindow == 0 {
|
||||||
file_chooser_dialog_window = uint32(window)
|
fileChooserDialogWindow = uint32(window)
|
||||||
Emmiter.Emit("file-chooser-dialog-opened")
|
Emmiter.Emit("file-chooser-dialog-opened")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//export goXEventUnmapNotify
|
//export goXEventUnmapNotify
|
||||||
func goXEventUnmapNotify(window C.Window) {
|
func goXEventUnmapNotify(window C.Window) {
|
||||||
if uint32(window) != file_chooser_dialog_window {
|
if uint32(window) != fileChooserDialogWindow || !FileChooserDialog {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
file_chooser_dialog_window = 0
|
fileChooserDialogWindow = 0
|
||||||
Emmiter.Emit("file-chooser-dialog-closed")
|
Emmiter.Emit("file-chooser-dialog-closed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user