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.