Странное поведение - браузер SWT в Mac OS X - PullRequest
1 голос
/ 29 мая 2009

Это странное поведение, которое трудно объяснить без картинки, поэтому я постараюсь изо всех сил.

Мое приложение имеет встроенный виджет браузера SWT, и приложение является кросс-платформенным. Он отлично работает на Windows, но должен поддерживать Mac OS X 10.4 и выше. Виджет браузера находится внутри композита с правой стороны, а дерево файлов внутри другого композита - с левой стороны. Пользователь щелкает файлы из дерева, и они в свою очередь расшифровываются и отображаются в браузере.

В настоящее время я тестирую приложение на Mac 10.4.11, и такое странное поведение происходит только при изменении размера окна оболочки. Композитный и виджет браузера сам изменяет размеры должным образом. Я могу видеть границы / границы объектов. Проблема в том, что изображение, которое должно быть в браузере, смещается (почти как если бы отображаемое изображение не было привязано к верхнему левому углу браузера). Он выравнивается сверху вниз, и само изображение имеет правильный размер, но изображение перемещается после изменения размера. Приложение выглядит нормально (то есть изображение идеально выровнено), когда оно изначально загружается, выглядит прекрасно, когда дерево файлов скрыто, а браузер / композитный файл занимает полную оболочку, выглядит прекрасно, когда дерево файлов восстанавливается. Это происходит только при изменении размера.

Надеюсь, это имело смысл. Есть идеи?

1 Ответ

3 голосов
/ 29 мая 2009

Хорошо, я понял это. Вот что у меня было сначала (в псевдокоде):

webBrowser.setSize (shell.width, shell.height);

.

webComposite.getParent () компоновка ();

Оказывается, мне нужно было в значительной степени восстановить браузер и его композицию так же, как я это делал, когда восстанавливал дерево файлов (потому что я знал, что после этого действия его размер был корректным). Код выше был заменен на:

webComposite.setLayoutData (новые GridData (SWT.LEFT, SWT.TOP, true, true));

webComposite.setBounds (widthOfTreeComposite, 0, shell.width, shell.height);

webComposite.setSize (shell.width, shell.height);

webBrowser.setLayoutData (новые GridData (SWT.LEFT, SWT.TOP, true, true));

webBrowser.setBounds (0, 0, shell.width, shell.height);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...