diff --git a/Mac/Demo/example2/dnslookup-2.py b/Mac/Demo/example2/dnslookup-2.py
index 82568d0..e595b8e 100644
--- a/Mac/Demo/example2/dnslookup-2.py
+++ b/Mac/Demo/example2/dnslookup-2.py
@@ -65,10 +65,10 @@
     def dolookup(self):
         """Get text entered in the lookup entry area.  Place result of the
            call to dnslookup in the result entry area."""
-        tp, h, rect = self.wid.GetDialogItem(ITEM_LOOKUP_ENTRY)
+        tp, h, rect = self.dlg.GetDialogItem(ITEM_LOOKUP_ENTRY)
         txt = Dlg.GetDialogItemText(h)
 
-        tp, h, rect = self.wid.GetDialogItem(ITEM_RESULT)
+        tp, h, rect = self.dlg.GetDialogItem(ITEM_RESULT)
         Dlg.SetDialogItemText(h, self.dnslookup(txt))
         
     def dnslookup(self, str):
diff --git a/Mac/Lib/FrameWork.py b/Mac/Lib/FrameWork.py
index dc762cf..4454c67 100644
--- a/Mac/Lib/FrameWork.py
+++ b/Mac/Lib/FrameWork.py
@@ -222,8 +222,9 @@
 		return old
 			
 	def do_dialogevent(self, event):
-		gotone, window, item = DialogSelect(event)
+		gotone, dlg, item = DialogSelect(event)
 		if gotone:
+			window = dlg.GetDialogWindow()
 			if self._windows.has_key(window):
 				self._windows[window].do_itemhit(item, event)
 			else:
@@ -995,14 +996,15 @@
 	"""A modeless dialog window"""
 	
 	def open(self, resid):
-		self.wid = GetNewDialog(resid, -1)
+		self.dlg = GetNewDialog(resid, -1)
+		self.wid = self.dlg.GetDialogWindow()
 		self.do_postopen()
 		
 	def close(self):
 		self.do_postclose()
 		
 	def do_itemhit(self, item, event):
-		print 'Dialog %s, item %d hit'%(self.wid, item)
+		print 'Dialog %s, item %d hit'%(self.dlg, item)
 		
 	def do_rawupdate(self, window, event):
 		pass
diff --git a/Mac/scripts/MkDistr_ui.py b/Mac/scripts/MkDistr_ui.py
index 88c87f9..15bfa42 100644
--- a/Mac/scripts/MkDistr_ui.py
+++ b/Mac/scripts/MkDistr_ui.py
@@ -59,16 +59,16 @@
 		self.callback = callback
 		self.cancelrv = cancelrv
 		DialogWindow.open(self, id)
-		tp, h, rect = self.wid.GetDialogItem(DLG_SRCPATH)
+		tp, h, rect = self.dlg.GetDialogItem(DLG_SRCPATH)
 		Dlg.SetDialogItemText(h, src)
-		self.wid.SetDialogDefaultItem(DLG_OK)
-		self.wid.SetDialogCancelItem(DLG_CANCEL)
+		self.dlg.SetDialogDefaultItem(DLG_OK)
+		self.dlg.SetDialogCancelItem(DLG_CANCEL)
 		if id == ID_INCLUDE:
-			tp, h, rect = self.wid.GetDialogItem(DLG_DSTPATH)
+			tp, h, rect = self.dlg.GetDialogItem(DLG_DSTPATH)
 			if dst == None:
 				dst = ''
 			Dlg.SetDialogItemText(h, dst)
-		self.wid.DrawDialog()
+		self.dlg.DrawDialog()
 	
 	def do_itemhit(self, item, event):
 		if item in (DLG_OK, DLG_CANCEL, DLG_EXCLUDE):
@@ -76,11 +76,11 @@
 		# else it is not interesting
 		
 	def done(self, item):
-		tp, h, rect = self.wid.GetDialogItem(DLG_SRCPATH)
+		tp, h, rect = self.dlg.GetDialogItem(DLG_SRCPATH)
 		src = Dlg.GetDialogItemText(h)
 		if item == DLG_OK:
 			if self.id == ID_INCLUDE:
-				tp, h, rect = self.wid.GetDialogItem(DLG_DSTPATH)
+				tp, h, rect = self.dlg.GetDialogItem(DLG_DSTPATH)
 				dst = Dlg.GetDialogItemText(h)
 				rv = (src, dst)
 			else:
@@ -99,7 +99,7 @@
 		self.id = id
 		DialogWindow.open(self, id)
 		Qd.SetPort(self.wid)
-		tp, h, rect = self.wid.GetDialogItem(MAIN_LIST)
+		tp, h, rect = self.dlg.GetDialogItem(MAIN_LIST)
 		self.listrect = rect
 		rect2 = rect[0]+1, rect[1]+1, rect[2]-16, rect[3]-16	# Scroll bar space
 		self.list = List.LNew(rect2, (0, 0, 1, len(contents)), (0,0), 0, self.wid,
@@ -170,7 +170,7 @@
 
 	def open(self, id, cb_check, cb_run, cb_add):
 		ListWindow.open(self, id, [])
-		self.wid.SetDialogDefaultItem(MAIN_INCLUDE)
+		self.dlg.SetDialogDefaultItem(MAIN_INCLUDE)
 		self.cb_run = cb_run
 		self.cb_check = cb_check
 		self.cb_add = cb_add
@@ -212,7 +212,7 @@
 	"""An include/exclude window"""
 	def open(self, id, editid, contents, cb_add, cb_del, cb_get):
 		ListWindow.open(self, id, contents)
-		self.wid.SetDialogDefaultItem(INCEXC_CHANGE)
+		self.dlg.SetDialogDefaultItem(INCEXC_CHANGE)
 		self.editid = editid
 		self.cb_add = cb_add
 		self.cb_del = cb_del
