Установить положение рамки оформленного GtkWindow на экране - PullRequest
3 голосов
/ 25 сентября 2019

У меня есть задача восстановить положение окна frame на экране при запуске программы - чтобы определить начальную позицию окна.

Рассмотрим следующий оформленный экземпляр GtkWindow в Linux:

enter image description here

Окно имеет два основных блока: рамочный блок и блок клиента.

И есть две функции GTK, которые позволяют устанавливать размер и положение окна на экране:

gtk_window_move () - устанавливает окно frame boxпозиция на экране и

gtk_window_resize - устанавливает размер окна client box.

Вопрос:

Есть ли способ в GTKопределить начальное frame расположение окна?

В Windows я могу сделать это, вызвав MoveWindow() и метод MacOS NSWindow setFrame.Но на GTK ... я слишком много спрашиваю?

1 Ответ

0 голосов
/ 26 сентября 2019

Подключиться к сигналу «реализовать» для окна ( важно : перед вызовом gtk_widget_show).Затем вызовите gtk_window_move из обработчика:

#include <gtk/gtk.h>

void on_window_realize(GtkWidget *widget,
                       gpointer user_data)
{
  GtkWindow *window = GTK_WINDOW(user_data);
  gtk_window_move(window, 100, 40);
}

int main(int argc, char **argv) {
  GtkWidget *window = NULL;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  g_signal_connect(window,
                   "realize",
                   G_CALLBACK(on_window_realize),
                   (gpointer)window);
  g_signal_connect(window, "destroy", gtk_main_quit, NULL);
  gtk_widget_show(window);

  gtk_main();

  return 0;
}
...