Я хочу изменить порядок кнопки minmize/resize/maximize в firefox, но не знаю, как это сделать.

Вроде userchrome.css не помогает.

Могу ли я настроить его?

1 ответ1

3

Да, можно изменить порядок трех кнопок заголовка, когда 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .