diff --git a/ide/main.pp b/ide/main.pp index 7b01794b15..cedea1305d 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -14076,13 +14076,16 @@ var CurFocusControl: TWinControl; ActiveSourceEditor: TSourceEditor; ActiveUnitInfo: TUnitInfo; + H: HWND; begin CurFocusControl:=Nil; ActiveSourceEditor:=Nil; // check if focus is on MainIDEBar or on SourceEditor if CheckFocus then begin - CurFocusControl:=FindOwnerControl(GetFocus); + H:=GetFocus; + CurFocusControl:=FindOwnerControl(H); + //debugln(['TMainIDE.DoSourceEditorCommand ',H<>0,' ',DbgSName(CurFocusControl)]); while (CurFocusControl<>nil) and (CurFocusControl<>MainIDEBar) and not (CurFocusControl is TCustomForm) do CurFocusControl:=CurFocusControl.Parent; diff --git a/ide/sourceeditor.pp b/ide/sourceeditor.pp index 70cfd9283b..1a3af64ce4 100644 --- a/ide/sourceeditor.pp +++ b/ide/sourceeditor.pp @@ -2475,13 +2475,13 @@ Begin FicPopUpMenuItems[A].RadioItem:=true; FicPopUpMenuItems[A].GroupIndex:=ord(A); FicPopUpMenuItems[A].OnClick:=@ICPopUpMenuItemClick; - case ord(A) of - 0: FicPopUpMenuItems[A].Caption:=lisSortOrderScopedAlphabetic; - 1: FicPopUpMenuItems[A].Caption:=lisSortOrderAlphabetic; - 2: FicPopUpMenuItems[A].Caption:=lisSortOrderDefinition; - else - FicPopUpMenuItems[A].Caption:='Method'+(ord(A)).ToString; + case A of + icsScopedAlphabetic: NewStr:=lisSortOrderScopedAlphabetic; + icsAlphabetic: NewStr:=lisSortOrderAlphabetic; + icsScopedDeclaration: NewStr:=lisSortOrderDefinition; + else NewStr:='Method'+(ord(A)).ToString; end; + FicPopUpMenuItems[A].Caption:=NewStr; FicPopUpMenu.Items.Insert(ord(A),FicPopUpMenuItems[A]); FicPopUpMenuItems[A].Checked:= CodeToolBoss.IdentifierList.SortMethodForCompletion=A; @@ -7458,12 +7458,11 @@ begin SrcEditSubMenuDebug.AddLast(SrcEditMenuViewCallStack); end; - SourceEditorMenuRoot.MenuItem:=SrcPopupMenu.Items; RemoveUserDefinedMenuItems; RemoveContextMenuItems; - ASrcEdit:=FindSourceEditorWithEditorComponent(TPopupMenu(Sender).PopupComponent); + ASrcEdit:=FindSourceEditorWithEditorComponent(SrcPopupMenu.PopupComponent); Assert(Assigned(ASrcEdit), 'TSourceNotebook.SrcPopUpMenuPopup: ASrcEdit=nil'); Assert((ASrcEdit=GetActiveSE), 'TSourceNotebook.SrcPopUpMenuPopup: ASrcEdit<>GetActiveSE'); EditorComp:=ASrcEdit.EditorComponent; diff --git a/lcl/interfaces/gtk2/gtk2wsforms.pp b/lcl/interfaces/gtk2/gtk2wsforms.pp index bcc30ecbd7..13d500abd1 100644 --- a/lcl/interfaces/gtk2/gtk2wsforms.pp +++ b/lcl/interfaces/gtk2/gtk2wsforms.pp @@ -282,9 +282,16 @@ begin // Switching to another workspace does not generate a focus out event . if PGdkEventFocus(event)^._in = 0 then begin + // focus out + //debugln(['Gtk2FormEvent focus out ',DbgSName(ACtl)]); + //if ACtl.Parent<>nil then + // debugln(['Gtk2FormEvent ACtl.Parent=',DbgSName(ACtl.Parent)]); + + // Test switch to another app via mouse, Alt-Tab, workspace. And test open popup menu click GetFocus. + {$IFDEF HASX} - if ACtl.Parent<>nil then - begin + //if ACtl.Parent<>nil then + //begin XDisplay := gdk_display; XGetInputFocus(XDisplay, @Window, @RevertStatus); // Window - 1 is our frame ! @@ -292,11 +299,10 @@ begin (GDK_WINDOW_XID(Widget^.Window) = Window - 1) then begin // Note: on LinuxMint switching via Alt-Tab to another window - // generates RevertToParent. The above - // - exit(True); + // generates RevertToParent. + exit(True); // stop end; - end; + //end; {$ENDIF} with Gtk2WidgetSet do begin @@ -306,6 +312,7 @@ begin end; end else begin + //debugln(['Gtk2FormEvent focus in ',DbgSName(ACtl)]); with Gtk2WidgetSet do begin StopAppFocusTimer;