Added minimal support for floating windows.
This commit is contained in:
parent
bf0a9084c5
commit
4014401c6c
|
@ -27,6 +27,11 @@ import types
|
|||
|
||||
import EasyDialogs
|
||||
|
||||
try:
|
||||
MyFrontWindow = FrontNonFloatingWindow
|
||||
except NameError:
|
||||
MyFrontWindow = FrontWindow
|
||||
|
||||
kHighLevelEvent = 23 # Don't know what header file this should come from
|
||||
SCROLLBARWIDTH = 16 # Again, not a clue...
|
||||
|
||||
|
@ -348,7 +353,7 @@ class Application:
|
|||
return
|
||||
else:
|
||||
# See whether the front window wants it
|
||||
w = FrontWindow()
|
||||
w = MyFrontWindow()
|
||||
if w and self._windows.has_key(w):
|
||||
window = self._windows[w]
|
||||
try:
|
||||
|
@ -393,7 +398,7 @@ class Application:
|
|||
|
||||
def do_suspendresume(self, event):
|
||||
(what, message, when, where, modifiers) = event
|
||||
wid = FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if wid and self._windows.has_key(wid):
|
||||
window = self._windows[wid]
|
||||
window.do_activate(message & 1, event)
|
||||
|
@ -497,7 +502,7 @@ class MenuBar:
|
|||
for i in range(len(menu.items)):
|
||||
label, shortcut, callback, kind = menu.items[i]
|
||||
if type(callback) == types.StringType:
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if wid and self.parent._windows.has_key(wid):
|
||||
window = self.parent._windows[wid]
|
||||
if hasattr(window, "domenu_" + callback):
|
||||
|
@ -589,7 +594,7 @@ class Menu:
|
|||
menuhandler = callback
|
||||
else:
|
||||
# callback is string
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if wid and self.bar.parent._windows.has_key(wid):
|
||||
window = self.bar.parent._windows[wid]
|
||||
if hasattr(window, "domenu_" + callback):
|
||||
|
@ -634,7 +639,7 @@ class PopupMenu(Menu):
|
|||
id = (reply & 0xffff0000) >> 16
|
||||
item = reply & 0xffff
|
||||
if not window:
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
try:
|
||||
window = self.bar.parent._windows[wid]
|
||||
except:
|
||||
|
@ -797,7 +802,7 @@ class Window:
|
|||
# If we're not frontmost, select ourselves and wait for
|
||||
# the activate event.
|
||||
#
|
||||
if FrontWindow() <> window:
|
||||
if MyFrontWindow() <> window:
|
||||
window.SelectWindow()
|
||||
return
|
||||
# We are. Handle the event.
|
||||
|
@ -846,7 +851,7 @@ class ControlsWindow(Window):
|
|||
if DEBUG: print "control hit in", window, "on", control, "; pcode =", pcode
|
||||
|
||||
def do_inContent(self, partcode, window, event):
|
||||
if FrontWindow() <> window:
|
||||
if MyFrontWindow() <> window:
|
||||
window.SelectWindow()
|
||||
return
|
||||
(what, message, when, where, modifiers) = event
|
||||
|
|
|
@ -17,6 +17,12 @@ import string
|
|||
import marshal
|
||||
import re
|
||||
|
||||
if hasattr(Win, "FrontNonFloatingWindow"):
|
||||
MyFrontWindow = Win.FrontNonFloatingWindow
|
||||
else:
|
||||
MyFrontWindow = Win.FrontWindow
|
||||
|
||||
|
||||
try:
|
||||
import Wthreading
|
||||
except ImportError:
|
||||
|
@ -1189,7 +1195,7 @@ def _filename_as_modname(fname):
|
|||
return string.join(string.split(modname, '.'), '_')
|
||||
|
||||
def findeditor(topwindow, fromtop = 0):
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if not fromtop:
|
||||
if topwindow.w and wid == topwindow.w.wid:
|
||||
wid = topwindow.w.wid.GetNextWindow()
|
||||
|
|
|
@ -6,9 +6,14 @@ import MacOS
|
|||
from Carbon import Events
|
||||
import traceback
|
||||
from types import *
|
||||
|
||||
from Carbon import Menu; MenuToolbox = Menu; del Menu
|
||||
|
||||
if hasattr(Win, "FrontNonFloatingWindow"):
|
||||
MyFrontWindow = Win.FrontNonFloatingWindow
|
||||
else:
|
||||
MyFrontWindow = Win.FrontWindow
|
||||
|
||||
|
||||
KILLUNKNOWNWINDOWS = 0 # Set to 0 for debugging.
|
||||
|
||||
class Application(FrameWork.Application):
|
||||
|
@ -115,7 +120,7 @@ class Application(FrameWork.Application):
|
|||
break
|
||||
|
||||
def do_frontWindowMethod(self, attr, *args):
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if wid and self._windows.has_key(wid):
|
||||
window = self._windows[wid]
|
||||
if hasattr(window, attr):
|
||||
|
@ -146,7 +151,7 @@ class Application(FrameWork.Application):
|
|||
if keycode in self.fkeymaps.keys(): # JJS
|
||||
ch = self.fkeymaps[keycode]
|
||||
modifiers = modifiers | FrameWork.cmdKey
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if modifiers & FrameWork.cmdKey and not modifiers & FrameWork.shiftKey:
|
||||
if wid and self._windows.has_key(wid):
|
||||
self.checkmenus(self._windows[wid])
|
||||
|
@ -175,7 +180,7 @@ class Application(FrameWork.Application):
|
|||
Qd.InitCursor()
|
||||
(what, message, when, where, modifiers) = event
|
||||
self.checkopenwindowsmenu()
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if wid and self._windows.has_key(wid):
|
||||
self.checkmenus(self._windows[wid])
|
||||
else:
|
||||
|
@ -209,7 +214,7 @@ class Application(FrameWork.Application):
|
|||
def checkopenwindowsmenu(self):
|
||||
if self._openwindowscheckmark:
|
||||
self.openwindowsmenu.menu.CheckMenuItem(self._openwindowscheckmark, 0)
|
||||
window = Win.FrontWindow()
|
||||
window = MyFrontWindow()
|
||||
if window:
|
||||
for item, wid in self._openwindows.items():
|
||||
if wid == window:
|
||||
|
@ -441,7 +446,7 @@ class Menu(FrameWork.Menu):
|
|||
|
||||
def _getmenuhandler(self, callback):
|
||||
menuhandler = None
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if wid and self.bar.parent._windows.has_key(wid):
|
||||
window = self.bar.parent._windows[wid]
|
||||
if hasattr(window, "domenu_" + callback):
|
||||
|
|
|
@ -7,6 +7,11 @@ import struct
|
|||
import traceback
|
||||
from types import InstanceType, StringType
|
||||
|
||||
if hasattr(Win, "FrontNonFloatingWindow"):
|
||||
MyFrontWindow = Win.FrontNonFloatingWindow
|
||||
else:
|
||||
MyFrontWindow = Win.FrontWindow
|
||||
|
||||
|
||||
class Window(FrameWork.Window, Wbase.SelectableWidget):
|
||||
|
||||
|
@ -488,9 +493,9 @@ class ModalDialog(Dialog):
|
|||
|
||||
def do_key(self, event):
|
||||
(what, message, when, where, modifiers) = event
|
||||
w = Win.FrontWindow()
|
||||
if w <> self.wid:
|
||||
return
|
||||
#w = Win.FrontWindow()
|
||||
#if w <> self.wid:
|
||||
# return
|
||||
c = chr(message & Events.charCodeMask)
|
||||
if modifiers & Events.cmdKey:
|
||||
self.app.checkmenus(self)
|
||||
|
@ -552,7 +557,7 @@ def FrontWindowInsert(stuff):
|
|||
raise TypeError, 'string expected'
|
||||
import W
|
||||
app = W.getapplication()
|
||||
wid = Win.FrontWindow()
|
||||
wid = MyFrontWindow()
|
||||
if wid and app._windows.has_key(wid):
|
||||
window = app._windows[wid]
|
||||
if hasattr(window, "insert"):
|
||||
|
|
Loading…
Reference in New Issue