![是否有可能在 Windows 中更改 Firefox 最大化按钮的位置?](https://linux22.com/image/1389164/%E6%98%AF%E5%90%A6%E6%9C%89%E5%8F%AF%E8%83%BD%E5%9C%A8%20Windows%20%E4%B8%AD%E6%9B%B4%E6%94%B9%20Firefox%20%E6%9C%80%E5%A4%A7%E5%8C%96%E6%8C%89%E9%92%AE%E7%9A%84%E4%BD%8D%E7%BD%AE%EF%BC%9F.png)
我想改变 Firefox 的最小化/调整大小/最大化按钮的顺序,但不知道该怎么做。
看来userchrome.css
并没有什么帮助。
我可以定制它吗?
答案1
是的,在 DWM 禁用时可以更改三个标题按钮的顺序。但如果 DWM 启用,我们就无法更改顺序。
方法:
1)从 C:\Program Files (x86)\Mozilla Firefox\browser 复制 omni.ja
2)使用 zip 工具解压
3)编辑chrome\browser\content\browser下的browser.xul,改变以下内容的顺序
<hbox id="titlebar-buttonbox-container" align="start">
<hbox id="titlebar-buttonbox">
<toolbarbutton class="titlebar-button" id="titlebar-close" command="cmd_closeWindow"/>
<toolbarbutton class="titlebar-button" id="titlebar-max" oncommand="onTitlebarMaxClick();"/>
<toolbarbutton class="titlebar-button" id="titlebar-min" oncommand="window.minimize();"/>
</hbox>
标题栏的顺序变为:close->max->minimized
zip -qr9XD omni.ja *
4)在omni目录下使用命令重新打包omni.ja。
5)用新编辑的 omni.ja 替换旧的 omni.ja
6)最终结果:
解释:
1)Firefox的ui布局是基于xul(一种基于xml的布局描述语言)的,以browser.xul作为主浏览器ui的描述文件。
2)启用 DWM 后,Firefox 使用默认窗口过程(DefWindowProc)绘制非客户区,
case WM_NCPAINT:
{
/*
* Reset the non-client paint region so that it excludes the
* non-client areas we paint manually. Then call defwndproc
* to do the actual painting.
*/
if (!mCustomNonClient)
break;
// let the dwm handle nc painting on glass
if(nsUXThemeData::CheckForCompositor())
break;
HRGN paintRgn = ExcludeNonClientFromPaintRegion((HRGN)wParam);
LRESULT res = CallWindowProcW(GetPrevWindowProc(), mWnd,
msg, (WPARAM)paintRgn, lParam);
if (paintRgn != (HRGN)wParam)
DeleteObject(paintRgn);
*aRetValue = res;
result = true;
}
break;
因此,在启用 dwm 时无法自定义这三个按钮。