2010-09-20 16 views
2

J'ai une application de bureau écrite en Ruby qui utilise GTK2. C'est juste une petite application de test pour jouer avec GTK2, mais j'ai des problèmes pour réaliser ce que je veux faire. Est-il possible d'utiliser GTK2 pour accéder à la barre de titre (en plus de définir le titre), soit pour y ajouter un bouton (à côté de min/max/etc, B dans le diagramme ci-dessous) soit pour ajouter une option au menu qui apparaît lorsque vous cliquez sur l'icône dans la barre de titre (A dans le diagramme ci-dessous)?Y at-il un moyen d'apporter des modifications à la barre de titre avec GTK2?

alt text

Je pense qu'il pourrait ne pas être parce que GTK est censé travailler avec de nombreux différents gestionnaires de fenêtres, mais je me demandais s'il y avait. Comme une question secondaire, quel événement clique sur le bouton 'croix'? Au moment où l'utilisateur clique sur le fait que la fenêtre disparaît mais le programme ne se termine pas - j'ai besoin de capturer cet événement et quitter le programme.

Merci pour toute aide, y compris me frapper sur la tête et me dire à quel point je suis stupide.

+0

Dans X11, vous ne savez même pas s'ils exécutent un WM. Quel signal les feux "X" dépend, aussi, entièrement sur le WM - est-ce que vous utilisez cette Metacity? – Ken

+0

Les chances sont-elles, oui. C'est (surtout) un programme d'environnement unique, et cet environnement est Gnome fonctionnant sous Fedora 13. Je peux vérifier le gestionnaire de fenêtres par défaut demain, mais c'est probablement de la métacity. – Stephen

+0

Généralement le WM possède cette zone, donc vous devez convaincre Metacity de dessiner là (et je ne sais pas s'il a des hooks pour ça). Si vous saviez que cela fonctionnait dans un environnement complètement contrôlé, vous pourriez probablement faire quelque chose de fou pour dessiner là, mais qui sait ce qui pourrait casser. :-) – Ken

Répondre

0

Non, la barre de titre est la propriété du gestionnaire de fenêtres et vous généralement pas accès directement.

Lorsque l'utilisateur tente de fermer la fenêtre en cliquant sur le bouton du gestionnaire de fenêtres, la fenêtre recevra le delete event.

1

Notez que cela est possible dans GTK 3.10 et plus, à l'aide gtk_window_set_titlebar(). Il remplace la barre de titre du gestionnaire de fenêtres par une barre personnalisée. GtkHeaderBar est une bonne classe de barre de titre personnalisée à utiliser.

Vous ne pouvez cependant le faire paraître comme le gestionnaire de fenêtres serait, parce que vous ne saurez pas que le gestionnaire de fenêtres que l'utilisateur est en cours d'exécution.