Я хочу изменить порядок кнопки minmize/resize/maximize в firefox, но не знаю, как это сделать.
Вроде userchrome.css
не помогает.
Могу ли я настроить его?
Я хочу изменить порядок кнопки minmize/resize/maximize в firefox, но не знаю, как это сделать.
Вроде userchrome.css
не помогает.
Могу ли я настроить его?
Да, можно изменить порядок трех кнопок заголовка, когда DWM отключен. Но если DWM включен, мы не можем изменить порядок.
Метод:
1) скопируйте файл omni.ja из C:\Program Files (x86)\Mozilla Firefox\browser
2) распакуйте его с помощью почтовых инструментов
3) отредактируйте browser.xul в chrome\browser\content\browser, измените порядок следования контента
<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
4) перепакуйте файл omni.ja с помощью команды zip -qr9XD omni.ja *
в каталоге omni.
5) заменить старый omni.ja новым отредактированным omni.ja
6) окончательный результат:
Объяснение:
1) Макет пользовательского интерфейса Firefox основан на xul(язык описания макетов на основе xml), а browser.xul используется в качестве файла описания для основного пользовательского интерфейса браузера.
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.