Beh, capire dov'è un bug e perché capita fa parte proprio del lavoro di correzione di bug, scrivere il codice è il meno :-)
Comunque, io non ho mai lavorato su Nautilus quindi non ho idea di come sia organizzato.
Inizieri facendo così:
- una volta scaricato il codice, do un'occhiata alla struttura generale delle directory, per capire come funziona il programma nel suo complesso. Ovviamente il codice è nella directory src/
- fatto ciò, cercherei di capire quali file potrebbero interessarmi. In particolare vediamo che c'è un file chiamato
nautilus-view-context-menus.xml, che contiene le voci del menù contestuale.
- In particolare c'è questa voce:
- Codice: Seleziona tutto
<item>
<attribute name="label" translatable="yes">Open With Other _Application</attribute>
<attribute name="action">view.open-with-other-application</attribute>
<attribute name="hidden-when">action-disabled</attribute>
</item>
Ora si tratta di capire cos'è l'azione
view.open-with-other-application.
Dove viene usato il file
view.open-with-other-application? Verifichiamo con grep:
grep -ir nautilus-view-context-menus.xml- Codice: Seleziona tutto
nautilus-view.c: builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-view-context-menus.xml");
Ecco qua! Vediamo cosa fa nautilus-view.c della azione
open-with-other-application:
La assegna a una funzione:
{ "open-with-other-application", action_open_with_other_application } (linea 5558).
Cerchiamo quindi questa funzione, sempre nello stesso file, linea 1080. Vediamo che richiama un'altra funzione,
open_with_other_program, qualche linea più sopra, che a sua volta richiama
choose_program, dichiarata nella linea 1032.
Vediamo che questa funzione chiama
gtk_app_chooser_dialog_new, che come riportato nella documentazione, non ha "Set as default" (
https://developer.gnome.org/gtk3/unstab ... ialog.html)
Procedendo allo stesso modo guardi come funziona l'apri con nella scheda delle proprietà (hint, utilizza un file scritto apposta, nautilus-mime-application-chooser.c)
Spero di esserti stato d'aiuto!