Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.11.2010, 18:11
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Window запоминает свое предыдущее местрорасположение.
Традиционный привет всем!
Два вопроса:
1. Окно после закрытия (посл close, не после hide) и очередного открытия - открывается в том же месте экрана, где оно находилось когда его закрывали. Как сделать так чтобы оно открывалось в центре экрана?
2. В фаерфоксе (точнее в namaroka под kubuntu) если взять окно за title и потащить мышкой в самый верх экрана, то можно занести его аш за меню, так, что когда мышь отпустишь крестика на окне уже не видно. Хоть страницу снова обновляй. Как эту проблему можно решить?

ДЛЯ ТЕХ, КТО НЕ ХОЧЕТ ЧИТАТЬ ВЕСЬ ПОСТ. РЕШЕНИЕ ТАКОЕ:
constrainHeader: true, // окно не будет засовываться не известно куда
       stateful: false // окно не будет запоминать своего положения при закрытии

Последний раз редактировалось cmygeHm, 30.11.2010 в 12:41.
Ответить с цитированием
  #2 (permalink)  
Старый 18.11.2010, 21:00
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

Ты используешь Ext.state.Manager
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
   var win = new Window(...);
   win.restoreState();


Про фаерфокс под кубунту - не наю
Ответить с цитированием
  #3 (permalink)  
Старый 19.11.2010, 09:03
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Сообщение от VKS Посмотреть сообщение
Ты используешь Ext.state.Manager

Это вопрос? Или ответ ?

Глянул что такое Ext.state.Manager, я его не использую. "Оно само срабатывает".

Вот ребята обсуждают: http://www.sencha.com/forum/showthre...indow&p=313320

Я только не понял, он предлагает добавить этот метод в сам класс?
Создал тему на их форуме, может ответят.

Последний раз редактировалось cmygeHm, 19.11.2010 в 09:46.
Ответить с цитированием
  #4 (permalink)  
Старый 22.11.2010, 15:11
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

Сообщение от cmygeHm Посмотреть сообщение
2. В фаерфоксе (точнее в namaroka под kubuntu) если взять окно за title и потащить мышкой в самый верх экрана, то можно занести его аш за меню, так, что когда мышь отпустишь крестика на окне уже не видно. Хоть страницу снова обновляй. Как эту проблему можно решить?
// you window
{
   listeters:{
         move : function( w, x, y ){
                if(y > "за пределами экрана"){
                    w.setPosition(....);
                }
         }
   }
}

и еще, позиция окна сохраняется в куках...

Последний раз редактировалось DooMer, 22.11.2010 в 15:13.
Ответить с цитированием
  #5 (permalink)  
Старый 22.11.2010, 15:28
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

спасибо. Я думал что может есть свойство какое. которое не разрешит затащить туда. а так - да, листенер - тоже выход из ситуации.спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 22.11.2010, 17:54
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Посмотрите на картинке, окно не просто залазит за края экрана, оно залазит за панель браузера. и тогда крестика не видно. и еще, посмотрел на в документации ExtJS, и не нашел там события move, у меня на такое событие вообще нет реакции у окна.
Изображения:
Тип файла: jpg snapshot4.jpg (87.9 Кб, 9 просмотров)
Ответить с цитированием
  #7 (permalink)  
Старый 23.11.2010, 10:43
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

move : ( Ext.Component this, Number x, Number y )
Fires after the component is moved.
Fires after the component is moved.
Listeners will be called with the following arguments:

    * this : Ext.Component
    * x : Number
      The new x position
    * y : Number
      The new y position


http://dev.sencha.com/deploy/dev/doc...Component-move
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2010, 10:17
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

Спасибо, я сделал. Я не тому окну листенер добавил и сидел думал почему не срабатывает, отдыхать надо чаще
Ответить с цитированием
  #9 (permalink)  
Старый 29.11.2010, 16:17
Аватар для cmygeHm
Профессор
Отправить личное сообщение для cmygeHm Посмотреть профиль Найти все сообщения от cmygeHm
 
Регистрация: 12.10.2010
Сообщений: 196

В общем создал свой класс окна, наследник Ext.Window и добавил ему соответствующие листенеры:
CenteredWindow = Ext.extend(Ext.Window, {

        initComponent: function(){
            Ext.applyIf(this, {
                resizable: false,
                listeners: {

                    move: function (w, x, y){
                        if (x<10 || (x+w.width)>GetWidth() || y<10 || y>GetHeight())
                        w.setPosition(GetWidth()/2-w.getWidth()/2, GetHeight()/2-w.getHeight()/2);
                    },
                    beforeshow: function(){
                        this.setPosition(GetWidth()/2-this.getWidth()/2, GetHeight()/2-this.getHeight()/2);
                    }
                }
           
            });

            CenteredWindow.superclass.initComponent.call(this);
        }
    });

function GetWidth()
{
      var x = 0;
      if (self.innerHeight)
      {
              x = self.innerWidth;
      }
      else if (document.documentElement && document.documentElement.clientHeight)
      {
              x = document.documentElement.clientWidth;
      }
      else if (document.body)
      {
              x = document.body.clientWidth;
      }
      return x;
}
function GetHeight()
{
      var y = 0;
      if (self.innerHeight)
      {
              y = self.innerHeight;
      }
      else if (document.documentElement && document.documentElement.clientHeight)
      {
              y = document.documentElement.clientHeight;
      }
      else if (document.body)
      {
              y = document.body.clientHeight;
      }
      return y;
}
Ответить с цитированием
  #10 (permalink)  
Старый 29.11.2010, 16:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от cmygeHm
CenteredWindow.superclass.initComponent.call(this) ;
Здесь полезно писать всегда одинаковый шаблон
<ClassName>.superclass.<methodName>.apply(this, arguments);

В вашем случае
CenteredWindow.superclass.initComponent.apply(this, arguments);

Тогда не придётся задумываться, а ожидает ли перекрываемый метод какие-нибудь аргументы.

Если метод что-то возвращает, придётся задуматься
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20