Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: gtk - окно, которое можно таскать за любую точку  (Прочитано 1120 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kiv

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
Есть окно. Всю его поверхность занимает GtkImage. Заголовок у окна отключен. Как сделать так, чтобы его можно было таскать за любую точку? Процедуру, которая инициирует перетаскивание, я вроде бы нашёл. Это gtk_window_begin_move_drag. Однако к какому сигналу на коннектить обработчик с вызовом этой функции и откуда взять параметры x_root, y_root, button и timestamp (если они не будут переданы обработчику сигнала при вызове)? Поскольку всю поверхность окна занимает image, возможно, надо будет коннектить обработчик сигнала не к окну, а к нему. Пожалуйста, помогите.

Оффлайн Упс

  • Старожил
  • *
  • Сообщений: 3231
    • Просмотр профиля
Re: gtk - окно, которое можно таскать за любую точк
« Ответ #1 : 09 Августа 2010, 00:52:57 »
Цитировать
Как сделать так, чтобы его можно было таскать за любую точку?
Зажать Alt и таскать за любую точку.
Во всяком случае пользователи Gnome привыкли так. :)
« Последнее редактирование: 09 Августа 2010, 00:55:03 от Упс »
xUbuntu 12.04

Бди!

  • Гость
ALT+ ЛКМ
УПС, опередили :D

Оффлайн kiv

  • Автор темы
  • Участник
  • *
  • Сообщений: 189
    • Просмотр профиля
Это конечно хорошо, но хотелось бы таскать не только по альту, но и без него. Пожалуйста, подскажите сигнал, который происходит при нажатии кнопки мыши на окне. Ну заодно сигнал при нажатии правой кнопки мыши - хочу сделать контекстное меню.

Пользователь решил продолжить мысль 09 Августа 2010, 12:17:38:
Хоте ли бы вы или нет, чтобы в моём приложении таскались окна не только с нажатым ALT, но и просто левой кнопкой, у меня это получилось. Сначала я разрешил приём событий о нажатии кнопки мыши.
gtk_widget_set_events(window, gtk_widget_get_events(window) | GDK_BUTTON_PRESS_MASK );А потом обрабатывал сигнал "button-press-event" и если button == 1 (левая кнопка), то вызываю gtk_window_begin_move_drag с параметрами из структуры event (благо там и button, и time, и x_root, и y_root).

Пользователь решил продолжить мысль 09 Августа 2010, 13:05:49:
А у меня возник ещё один вопрос: как средствами GTK поставить окно поверх всех окон? Я знаю, что есть флажок "Всегда наверху", но хотелось бы сохранять состояние в конфигрурационный файл. То есть установишь поверх всех окон - закрыл - открыл - а оно опять поверх всех окон. Мне надо способ определить поверх ли всех окон окно и возможность установить это значение.
« Последнее редактирование: 09 Августа 2010, 13:05:49 от kiv »

 

Страница сгенерирована за 0.093 секунд. Запросов: 26.