Perché utilizzare X11 Windows in un toolkit GUI?

2

In GTK +, la maggior parte se non tutti i widget sono basati su finestre GDK, che sono a loro volta supportate dalla propria finestra X11, assumendo che si usi il backend X11 (si noti che non sto parlando di finestre di primo livello, ma del finestra specifica per ciascun widget).

Qual è la logica alla base di questo? Toolkit come GTK + supportano altri backend come Win32, e sembra che ottenere il massimo dal sistema a finestre e disegnare / gestire tutto il resto da solo sarebbe meno problematico in un'impostazione multipiattaforma.

    
posta Fabian Knorr 13.09.2016 - 04:52
fonte

1 risposta

5

...it seems like just getting your toplevel from the window system and drawing / managing everything else on your own would be less of a hassle in a cross-platform setting.

In un mondo in cui il minimo comune denominatore è un sistema di finestre in cui ci sono solo finestre di livello superiore che sono solo tele, avresti ragione. Ma le cose non funzionano così da molto tempo.

La cosa più grande che qualsiasi sistema di finestre che va oltre la piastrellatura deve affrontare è la sovrapposizione. Deve essere consapevole di dove sono le finestre e di come sono impilate per decidere dove inviare l'input e dove posizionare e ritagliare l'output. Una volta risolto il problema, i sottofinestre per widget non sono un problema perché lo stesso insieme di regole viene applicato a uno stack più profondo. Con il sistema di finestre in grado di gestirlo, non c'è motivo per ogni cliente di duplicare tale sforzo, anche se è in una libreria da qualche parte. Ogni sistema di finestre di qualsiasi significato che ha preso vita negli ultimi 30 anni ha adottato questo modello e toolkit come GTK + sfruttano il fatto che X, Windows e Quartz lo usano tutti.

Sul lato client, anche le finestre univoche per componente di interfaccia hanno molto senso. Invece di essere lasciato da solo per capire quale parte del tuo codice ha bisogno di servire quel clic del mouse che hai ottenuto (280, 192) nella finestra principale, ottieni un identificatore per la finestra dove è atterrato che può essere usato per abbinare con un widget e le coordinate relative ai suoi confini. I componenti dell'interfaccia devono solo comprendere se stessi (dimensioni, colore del testo, contenuto del testo, ecc.) E non sapere o preoccuparsi di ciò che accade da nessun'altra parte.

Avendo inventato parti di quella ruota io stesso una o due volte negli anni '80, posso dirti per esperienza che è molto lavoro, e sono molto più felice di lasciarmi occupare dal sistema di finestre.

    
risposta data 13.09.2016 - 05:54
fonte

Leggi altre domande sui tag