Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Передвинуть меню в пределах экрана (https://javascript.ru/forum/extjs/36060-peredvinut-menyu-v-predelakh-ehkrana.html)

khusamov 02.03.2013 23:31

Передвинуть меню в пределах экрана
 
Как перерисовать объект типа Ext.menu.Menu?

Дело в том, что если меню появляется например по клику правой кнопки (аля контестное меню), то оно сдвигается в сторону в случае, если выходит за пределы экрана.

Но этого почему-то не происходит, если после отображения меню начать добавлять в него новые пункты. В итоге, если меню находится внизу экрана и новые меню начинают уходить за пределы экрана, то меню не сдвигается и эти дополнительные пункты не доступны для клика.

Пока выкрутился так:
menu.hide();
menu.show();

Хотелось бы после добавления новых пунктов перерисовать меню.
Но как это сделать?

.

Krepkii 23.03.2013 01:41

menu.destroy();
а потом опять menu.create(); пробовал?

khusamov 23.03.2013 02:23

Цитата:

Сообщение от Krepkii (Сообщение 242108)
menu.destroy();
а потом опять menu.create(); пробовал?

По-мойму, это еще хуже, чем hide+show.

Krepkii 24.03.2013 04:19

а если при вызове меню определять его положение
x_menu[id] = Ext.get(id).getX();
y_menu[id] = Ext.get(id).getY();

а потом при добавлении пунктов сдвигать на нужное количество пикселей (p)
Ext.get(id).setX((x_menu[id]+p));
Ext.get(id).setY((y_menu[id]+p));

khusamov 24.03.2013 13:00

Делать ту работу, которую должно делать само меню автоматически?

Ну уж нет. Все это называется "выкрутился".

Нужен метод типа menu.repaint(). А его нет.


Часовой пояс GMT +3, время: 19:25.