Refresh issue

Cees de Groot cg at cdegroot.com
Tue Mar 15 08:18:52 UTC 2005


Hi,

I have a notebook with two similar, but not same, tabs:

WxPanel subclass+WxBoxSizer
  WxSplitterWindow
   DGVFileListCtrl
   DGVDcEditorWidget

DGVFileListCtrl inherits from DGVListCtrl which inherits from WxListCtrl
DGVDcEditorWidget inherits from WxPanel

Here's the code that creates this tab:
createView
	| sizer labels |
	sizer := WxFlexGridSizer
				cols: 2
				vgap: 5
				hgap: 10.
	sizer addGrowableCol: 2.
	labels := DGVDublinCore dcAttributeDescriptions.
	DGVDublinCore dcAttributeNames do:
			[:each |
			self
				createRowForAspect: each
				label: (labels at: each)
				grid: sizer
				panel: self].
	#(#publisher #date #identifier) do: [:each |
		(self findWindowByName: (self fieldNameFor: each))
			setEditable: false;
			setBackgroundColour: WxColour lightGrey].
	self setSizer: sizer

The other tab is simpler:
WxPanel subclass+WxBoxSizer
  DGVUserListCtrl

DGVUserListCtrl inherits from DGVListCtrl which inherits from WxListCtrl

Code is simpler too:
createView
	| sizer |

	listctrl _ DGVUserListCtrl parent: self.
	listctrl on: self changeSelected: #selectedUser:.

	sizer := WxBoxSizer orientation: wxHorizontal.
	sizer add: listctrl proportion: 1 flags: wxExpand | wxAll border: 0.
	self setSizer: sizer.
	

Both are put into the notebook inside a WxPanel+WxBoxSizer to put a border  
around the component. That's generic code in the class that deals with  
deciding what tab gets what component.

The problem: the simple tab refreshes perfectly. The 'complex' tab only  
refreshes the bottom comonent (the DGVDcEditorWidget), not the top  
component (the DGVFileListCtrl).

I'm not sure that this has anything to do with the 'virtual' problem I  
described in my previous mail, but it's certainly funny (code available on  
request - with SqueakSource's performance I'm hesitant to publish there  
willy-nilly).



More information about the Wxsqueak mailing list