É possível alterar a posição do botão de maximização do firefox no Windows?

0

Eu quero alterar a ordem do botão minmize / redimensionar / maximizar do firefox, mas não sei como fazê-lo.

Parece que userchrome.css não ajuda.

Posso personalizá-lo?

    
por Jichao 11.12.2013 / 06:33

1 resposta

3

Sim, é possível alterar a ordem dos três botões de título enquanto o DWM está desativado. Mas se o DWM estiver ativado, não poderemos alterar o pedido.

Método:

1) copie omni.ja de C: \ Arquivos de Programas (x86) \ Mozilla Firefox \ browser

2) extraí-lo com suas ferramentas zip

3) edite o browser.xul em chrome \ browser \ content \ browser, altere a ordem do conteúdo a seguir

<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>

a ordem da barra de título se torna: close- > max- > minimizada

4) reembale o omni.ja com o comando zip -qr9XD omni.ja * no diretório omni.

5) substitua o antigo omni.ja pelo novo omni.ja editado

6) o resultado final:

Explicação:

1) O layout ui do Firefox é baseado em xul (uma linguagem de descrição de layout baseada em xml) e browser.xul é usado como o arquivo de descrição para o navegador principal ui.

2) Enquanto o DWM está habilitado, o Firefox desenha a área não cliente usando a janela padrão proc (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;

Portanto, é impossível personalizar o botão três enquanto o dwm está ativado.

    
por 13.12.2013 / 07:09

Tags