patch from "halabund" to remember keyboard layout in fields on win32

This commit is contained in:
Damien Elmes 2009-07-27 21:11:30 +09:00
parent c5857de1a7
commit 117fff96b0

View file

@ -5,7 +5,7 @@
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtSvg import * from PyQt4.QtSvg import *
import re, os, sys, tempfile, urllib2 import re, os, sys, tempfile, urllib2, ctypes
from anki.utils import stripHTML, tidyHTML, canonifyTags from anki.utils import stripHTML, tidyHTML, canonifyTags
from anki.sound import playFromText from anki.sound import playFromText
from ankiqt.ui.sound import getAudio from ankiqt.ui.sound import getAudio
@ -925,6 +925,16 @@ class FactEdit(QTextEdit):
def __init__(self, parent, *args): def __init__(self, parent, *args):
QTextEdit.__init__(self, *args) QTextEdit.__init__(self, *args)
self.parent = parent self.parent = parent
if sys.platform.startswith("win32"):
self._ActivateKeyboardLayout = ctypes.windll.user32.ActivateKeyboardLayout
self._ActivateKeyboardLayout.restype = ctypes.c_void_p
self._ActivateKeyboardLayout.argtypes = [ ctypes.c_void_p, ctypes.c_uint ]
self._GetKeyboardLayout = ctypes.windll.user32.GetKeyboardLayout
self._GetKeyboardLayout.restype = ctypes.c_void_p
self._GetKeyboardLayout.argtypes = [ ctypes.c_uint ]
self._ownLayout = None
def canInsertFromMimeData(self, source): def canInsertFromMimeData(self, source):
return (source.hasUrls() or return (source.hasUrls() or
@ -1027,6 +1037,9 @@ class FactEdit(QTextEdit):
self.parent.lastFocusedEdit = self self.parent.lastFocusedEdit = self
self.parent.resetFormatButtons() self.parent.resetFormatButtons()
self.parent.disableButtons() self.parent.disableButtons()
if sys.platform.startswith("win32"):
self._ownLayout = self._GetKeyboardLayout(0)
self._ActivateKeyboardLayout(self._programLayout, 0)
self.emit(SIGNAL("lostFocus")) self.emit(SIGNAL("lostFocus"))
def focusInEvent(self, evt): def focusInEvent(self, evt):
@ -1044,6 +1057,12 @@ class FactEdit(QTextEdit):
QTextEdit.focusInEvent(self, evt) QTextEdit.focusInEvent(self, evt)
self.parent.formatChanged(None) self.parent.formatChanged(None)
self.parent.enableButtons() self.parent.enableButtons()
if sys.platform.startswith("win32"):
self._programLayout = self._GetKeyboardLayout(0)
if self._ownLayout == None:
self._ownLayout = self._programLayout
self._ActivateKeyboardLayout(self._ownLayout, 0)
class PreviewDialog(QDialog): class PreviewDialog(QDialog):