47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
package mobile
|
|
|
|
import (
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/driver/mobile"
|
|
"fyne.io/fyne/v2/internal/driver/mobile/app"
|
|
)
|
|
|
|
func (dev *device) hideVirtualKeyboard() {
|
|
if d, ok := fyne.CurrentApp().Driver().(*driver); ok {
|
|
if d.app == nil { // not yet running
|
|
return
|
|
}
|
|
|
|
d.app.HideVirtualKeyboard()
|
|
dev.keyboardShown = false
|
|
}
|
|
}
|
|
|
|
func (dev *device) handleKeyboard(obj fyne.Focusable) {
|
|
isDisabled := false
|
|
if disWid, ok := obj.(fyne.Disableable); ok {
|
|
isDisabled = disWid.Disabled()
|
|
}
|
|
if obj != nil && !isDisabled {
|
|
if keyb, ok := obj.(mobile.Keyboardable); ok {
|
|
dev.showVirtualKeyboard(keyb.Keyboard())
|
|
} else {
|
|
dev.showVirtualKeyboard(mobile.DefaultKeyboard)
|
|
}
|
|
} else {
|
|
dev.hideVirtualKeyboard()
|
|
}
|
|
}
|
|
|
|
func (dev *device) showVirtualKeyboard(keyboard mobile.KeyboardType) {
|
|
if d, ok := fyne.CurrentApp().Driver().(*driver); ok {
|
|
if d.app == nil { // not yet running
|
|
fyne.LogError("Cannot show keyboard before app is running", nil)
|
|
return
|
|
}
|
|
|
|
dev.keyboardShown = true
|
|
d.app.ShowVirtualKeyboard(app.KeyboardType(keyboard))
|
|
}
|
|
}
|