Bug 4941 - Focus callback during OleClientSite deactivate call
Summary: Focus callback during OleClientSite deactivate call
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P2 normal (vote)
Target Milestone: ---   Edit
Assignee: Veronika Irvine CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 7379
  Show dependency tree
 
Reported: 2001-10-12 14:06 EDT by Simon Arsenault CLA
Modified: 2002-05-15 16:52 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Simon Arsenault CLA 2001-10-12 14:06:53 EDT
This problem is causing the workbench to keep the editor tab in blue even when 
a view has focus somewhere else.

1) Open a .BMP file (opens MS Paint)
2) Click on the BMP file in the navigator, notice the editor tab is blue 
instead of white but the editor is disactivated.

Looking at the stack trace below, notice the OleFrame is getting a WM_FOCUS 
message during the call to OleClientSite.deactivateInPlaceClient().

Thread [main] (Suspended (breakpoint at line 118 in EditorPane))
	EditorPane.showFocus(boolean) line: 118
	WorkbenchPage$1.run() line: 112
	InternalPlatform.run(ISafeRunnable) line: 761
	Platform.run(ISafeRunnable) line: 395
	WorkbenchPage.activatePart(IWorkbenchPart, boolean, boolean) line: 107
	WorkbenchPage.setActivePart(IWorkbenchPart) line: 1274
	WorkbenchPage.requestActivation(IWorkbenchPart) line: 1097
	EditorPane(PartPane).requestActivation() line: 216
	EditorPane.requestActivation() line: 106
	EditorPane(PartPane).handleEvent(Event) line: 174
	EventTable.sendEvent(Event) line: 53
	ViewForm(Widget).sendEvent(int, Event) line: 841
	ViewForm(Widget).sendEvent(int) line: 831
	Shell.setActiveControl(Control) line: 660
==>	OleFrame(Control).WM_SETFOCUS(int, int) line: 3445
	OleFrame(Control).windowProc(int, int, int) line: 2497
	Display.windowProc(int, int, int, int) line: 1692
	COM.VtblCall(int, int)
	IOleInPlaceObject.InPlaceDeactivate() line: 15
==>	OleClientSite.deactivateInPlaceClient() line: 489
	OleEditor.deactivateClient(IWorkbenchPart) line: 107
	OleEditor.access$1(OleEditor, IWorkbenchPart) line: 103
	OleEditor$1.partDeactivated(IWorkbenchPart) line: 59
	PartListenerList$4.run() line: 97
	InternalPlatform.run(ISafeRunnable) line: 761
	Platform.run(ISafeRunnable) line: 395
	PartListenerList.firePartDeactivated(IWorkbenchPart) line: 95
	WorkbenchPage.firePartDeactivated(IWorkbenchPart) line: 599
	WorkbenchPage.setActivePart(IWorkbenchPart) line: 1257
	WorkbenchPage.requestActivation(IWorkbenchPart) line: 1097
	ViewPane(PartPane).requestActivation() line: 216
	ViewPane(PartPane).handleEvent(Event) line: 174
	EventTable.sendEvent(Event) line: 53
	ViewForm(Widget).sendEvent(int, Event) line: 841
	ViewForm(Widget).sendEvent(int) line: 831
	Shell.setActiveControl(Control) line: 660
	Shell.WM_MOUSEACTIVATE(int, int) line: 899
	Shell(Control).windowProc(int, int, int) line: 2478
	Shell(Decorations).windowProc(int, int, int) line: 932
	Display.windowProc(int, int, int, int) line: 1692
	OS.DefWindowProc(int, int, int, int)
	Composite(Scrollable).callWindowProc(int, int, int) line: 71
	Composite(Control).windowProc(int, int, int) line: 2512
	Display.windowProc(int, int, int, int) line: 1692
	OS.DefWindowProc(int, int, int, int)
	Composite(Scrollable).callWindowProc(int, int, int) line: 71
	Composite(Control).windowProc(int, int, int) line: 2512
	Display.windowProc(int, int, int, int) line: 1692
	OS.DefWindowProc(int, int, int, int)
	ViewForm(Scrollable).callWindowProc(int, int, int) line: 71
	ViewForm(Control).windowProc(int, int, int) line: 2512
	Display.windowProc(int, int, int, int) line: 1692
	OS.DefWindowProc(int, int, int, int)
	Composite(Scrollable).callWindowProc(int, int, int) line: 71
	Composite(Control).windowProc(int, int, int) line: 2512
	Display.windowProc(int, int, int, int) line: 1692
	OS.CallWindowProc(int, int, int, int, int)
	Tree.callWindowProc(int, int, int) line: 145
	Tree(Control).windowProc(int, int, int) line: 2512
	Display.windowProc(int, int, int, int) line: 1692
	OS.PeekMessage(MSG, int, int, int, int)
	Display.readAndDispatch() line: 1155
	Workbench.runEventLoop() line: 675
	Workbench.run(Object) line: 658
	InternalBootLoader.run(String, URL, String, String[]) line: 820
	BootLoader.run(String, URL, String, String[]) line: 285
	Method.invoke(Object, Object[])
	UIMain(Main).basicRun(String[]) line: 151
	UIMain(Main).run(String[]) line: 498
	UIMain.main(String[]) line: 52
Comment 1 Veronika Irvine CLA 2002-05-15 16:52:55 EDT
I think I have fixed this.
On deactivation, I was resizing/repositioning the editor to display in the top 
left corner.  This caused the editor to grab the focus back again.

Fixed 0515.