📘 MAC0470/5856 - Desenvolvimento de Software Livre (2026)

Contribuindo para o KDE: Okular e o Cursor Teimoso

Capa do post - Okular

Introdução

Após a experiência com o kernel Linux, a segunda contribuição da disciplina nos levou a um projeto mais acessível: o KDE, especificamente o visualizador Okular. Escolhemos um bug com tag "junior-job" que parecia simples: no modo de navegação, o cursor não mudava para "mão fechada" ao pressionar o botão esquerdo – ficava com um atraso e mudava para "redimensionar".

O que parecia trivial se tornou um problema sobre diferenças entre distribuições, versões do Qt e a importância de reproduzir o problema no ambiente correto.

O problema e o ambiente

Meu colega, que usa Arch Linux, reproduziu o bug imediatamente. Já no meu Debian stable, o cursor funcionava perfeitamente. A razão? Não sabemos ainda, mas talvez bug já havia sido corrigido em versões recentes, mas ainda existia no código-fonte do Okular.

Para testar a correção, usei o ambiente de desenvolvimento do KDE (kde-builder), que compila tudo com as dependências corretas

Mergulhando no código

Analisando /part/pageview.cpp, encontramos a causa:

  • Um QTimer (leftClickTimer) era iniciado com delay igual ao doubleClickInterval() + 10.
  • Esse timer chamava slotShowSizeAllCursor(), que mudava o cursor para SizeAllCursor.

A solução foi simples: remover o timer e a função, e definir o cursor diretamente no mousePressEvent() para ClosedHandCursor, sem atraso.

A contribuição

Com a correção pronta, criamos um Merge Request no GitLab do KDE. O processo foi direto: fork, branch, commit, push e MR. Os pipelines de CI rodaram os testes automaticamente.

Lições aprendidas

  • Distribuições diferentes, comportamentos diferentes: o Debian stable tem bibliotecas mais antigas, o que pode ser um problema como o QT que no debian é bem desatualizado comparado com o Qt de desenvolvimento do KDE.
  • Use o ambiente recomendado pelo projeto: para contribuir com KDE, o kde-builder é essencial para garantir as versões corretas.
  • KDE é mais amigável que o kernel: documentação clara e ferramentas simples.

Estado atual

Nosso MR aguarda revisão dos mantenedores. A correção é pequena e bem direta, então estamos otimistas.