Как проверить, развернуто ли окно в Gtk? - PullRequest
1 голос
/ 28 сентября 2011

Я хочу дать окну определенное свойство только тогда, когда оно развернуто , и изменить его обратно, когда закончится развернутое состояние.Я использую Gtk #, но приветствуются все ответы, связанные с GTK.Я ищу что-то вроде этого (псевдокод):

 OnMaximise += new Mhandler();
 Mhandler(){ property = true;}

или:

Resize += delegate() {
     if (isMaximised()) property=true; else property = false;};

или путь C:

gtk_window_on_maximise(GTK_WINDOW(mwin),onmax);
void onmax() 
{ 
     if (gtk_window_is_max(GTK_WINDOW(mwin))        
          gtk_window_set_property(GTK_WINDOW(mwin),true); 
     else gtk_window_set_property(GTK_WINDOW(mwin),false);
}

Есть предложения?Спасибо

1 Ответ

2 голосов
/ 29 сентября 2011

Установите сигнал "window-state-event" при создании окна и следите за ним.См. http://developer.gnome.org/gtk/2.24/GtkWindow.html#gtk-window-maximize, а также http://developer.gnome.org/gtk/2.24/GtkWidget.html#GtkWidget-window-state-event

Ваш onmax () будет обработчиком, который будет вызываться, когда GDK_WINDOW_STATE_MAXIMIZED становится TRUE.См. http://developer.gnome.org/gdk/stable/gdk-Events.html#GDK-STRUCTURE-MASK:CAPS и http://developer.gnome.org/gdk/stable/gdk-Event-Structures.html#GdkEventWindowState и http://developer.gnome.org/gdk/stable/gdk-Event-Structures.html#GdkWindowState

Извините, не могу помочь намного больше без написания кода.У Google может быть несколько хороших примеров, а с другой - нет.На самом деле документация предназначена для людей, которые уже могут передавать сигналы GTK +.

РЕДАКТИРОВАТЬ: я делаю GTK + на C, а страницы, на которые я ссылаюсь, предназначены для C.

EDIT # 2: Обработчик (обратный вызов) выполняется всякий раз, когда сигнал отправляется, и данные сигнала имеют значение.Я бы, вероятно, сделал switch: case для каждого значения данных сигнала, которое меня интересовало, и, возможно, установил бы флаг для других функций, чтобы они читались позже.

...