2009-06-04 6 views
1

J'ai une application qui envoie le focus à d'autres fenêtres mais ces fenêtres ne s'affichent pas automatiquement au premier plan, c'est-à-dire au-dessus de toutes les autres fenêtres. Où puis-je configurer les préférences de mon gestionnaire de fenêtres pour qu'il s'agisse du comportement par défaut?Comment faire pour qu'une fenêtre se place en haut des autres fenêtres de Gnome lorsque cette fenêtre est déjà active?

En particulier j'utilise les raccourcis Ctrl-0 et Ctrl-Shft-0 dans l'IDE MATLAB pour passer de la fenêtre de commande à la fenêtre de l'éditeur et bien que le focus semble être transféré, la nouvelle fenêtre n'est pas automatiquement se redessiner au premier plan.

Merci

Répondre

2

Vous n'êtes pas sûr d'avoir une touche relâchée à la main, mais si vous cliquez sur une fenêtre (ce qui vous permet de faire glisser une fenêtre), cela devrait arriver à l'avant.

Comme le suggère codeDr, MATLAB est également un peu mauvais pour repeindre ses fenêtres. Si vous tracez une figure pendant que le code s'exécute, la figure ne se met pas à jour à moins que vous n'exécutiez drawnow ou que vous ayez une pause similaire dans l'exécution pour permettre à l'interface graphique de repeindre. Puisque nous parlons de MATLAB, la commande figure fera également venir la figure indiquée à l'avant (en fait, il est plus difficile de l'obtenir à pas à de venir au premier plan). Donc, vous pouvez faire figure(gcf) pour mettre le chiffre actuel à l'avant, ou enregistrer le numéro de la figure avec h = figure;, puis plus tard figure(h). Incidemment, si vous voulez basculer les chiffres actuels sans changer de foyer, set(0, 'CurrentFigure', h) doit définir h sur la figure actuelle.

0

Habituellement, lorsque la fenêtre ne pas repeindre, cela signifie que la boucle principale d'application de l'application ne fonctionne pas pour actualiser la fenêtre. Se pourrait-il que Matlab fasse du calcul ou de l'activité disque quand vous changez de fenêtre?

1

Votre gestionnaire de fenêtres (probablement Metacity?) Implémente la prévention du vol de mise au point afin que les applications malveillantes n'affichent pas les fenêtres qui pourraient perturber votre saisie. Matlab doit lever sa fenêtre et lui donner le focus d'entrée avec l'horodatage correct. Si cela est effectué à partir d'un gestionnaire d'événements KeyPress, l'horodatage pour définir le focus d'entrée correspond à l'horodatage de l'événement KeyPress (c'est-à-dire l'horodatage de l'événement généré par l'utilisateur).

Pour donner poliment l'accent de saisie à une fenêtre, recherchez _NET_ACTIVE_WINDOW.

Questions connexes