【问题标题】:Focus-follows-mouse conflicts with Resharper navigation焦点跟随鼠标与 Resharper 导航冲突
【发布时间】:2013-01-05 16:37:39
【问题描述】:

在 Windows 7 中,您只需将鼠标悬停在窗口上即可获得焦点。默认情况下不启用此功能,但您可以在控制面板中启用它。 (这里是要走的路:

[轻松访问中心-->使鼠标更易于使用-->选中“将鼠标悬停在窗口上激活窗口”])。

我非常喜欢这个功能,但是当我尝试使用 Resharper 在 Visual Studio 中打开一个 C# 类时,它有时会令我烦恼。我将按 CTRL+N 并键入我想查看的类的名称(例如,“MyWpfClass”)。然后,Resharper 将在顶部显示带有“MyWpfClass”的建议下拉列表。我点击返回,现在 Resharper 打开一个下拉菜单,让我在“MyWpfClass.xaml”和“MyWpfClass.xaml.cs”之间进行选择。但是,如果鼠标光标位于错误的位置,下拉菜单会在一秒钟内关闭,然后我会回到第一格。有没有办法在不关闭焦点跟随鼠标功能的情况下解决这个问题?

【问题讨论】:

  • 虽然我完全不确定这是否是 ReSharper 的责任,但我还是建议在 youtrack.jetbrains.net 上打开一个问题以防万一。

标签: windows-7 focus resharper mouseleave


【解决方案1】:

我在使用 MS Outlook 时遇到了同样的问题:联系人的自动建议列表会自动关闭,因为 Windows 将其视为一个窗口,而不是新消息窗口的一部分。

您可以使用 NiftyWindows,它具有相同的选项“焦点跟随鼠标”,可通过其上下文菜单访问。

或者,由于它是用 Autohotkey 编写的,您可以使用提取并将其子例程“XWN_FocusHandler”运行到独立脚本中:

#Persistent 
#SingleInstance force
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn All, OutputDebug ; Recommended for catching common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

SetTimer, XWN_FocusHandler, 100
return

XWN_FocusHandler:
    CoordMode, Mouse, Screen
    MouseGetPos, XWN_MouseX, XWN_MouseY, XWN_WinID
    If ( !XWN_WinID )
        Return

    If ( (XWN_MouseX != XWN_MouseOldX) or (XWN_MouseY != XWN_MouseOldY) )
    {
        IfWinNotActive, ahk_id %XWN_WinID%
            XWN_FocusRequest = 1
        Else
            XWN_FocusRequest = 0

        XWN_MouseOldX := XWN_MouseX
        XWN_MouseOldY := XWN_MouseY
        XWN_MouseMovedTickCount := A_TickCount
    }
    Else
        If ( XWN_FocusRequest and (A_TickCount - XWN_MouseMovedTickCount > 500) )
        {
            WinGetClass, XWN_WinClass, ahk_id %XWN_WinID%
            If ( XWN_WinClass = "Progman" )
                Return

            ; checks wheter the selected window is a popup menu
            ; (WS_POPUP) and !(WS_DLGFRAME | WS_SYSMENU | WS_THICKFRAME)
            WinGet, XWN_WinStyle, Style, ahk_id %XWN_WinID%
            If ( (XWN_WinStyle & 0x80000000) and !(XWN_WinStyle & 0x4C0000) )
                Return

            IfWinNotActive, ahk_id %XWN_WinID%
                WinActivate, ahk_id %XWN_WinID%

            XWN_FocusRequest = 0
        }
Return

【讨论】:

    猜你喜欢
    • 2011-04-16
    • 1970-01-01
    • 2013-10-19
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多