1
1

SM now supports no-windows-open setup -mig

Этот коммит содержится в:
Miguel de Icaza 1998-05-04 20:25:27 +00:00
родитель 79455c64d7
Коммит 540e850b31
5 изменённых файлов: 45 добавлений и 10 удалений

Просмотреть файл

@ -1,3 +1,9 @@
1998-05-04 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gmain.c (idle_destroy_window), main.c: Session management now
supports not showing a toplevel window (in case all of the windows
were closed).
1998-04-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
* gtrans.c (make_transparent_window): Put hack back.

Просмотреть файл

@ -439,7 +439,7 @@ create_container (Dlg_head *h, char *name, char *geometry)
return panel;
}
void
WPanel *
new_panel_with_geometry_at (char *dir, char *geometry)
{
WPanel *panel;
@ -449,12 +449,14 @@ new_panel_with_geometry_at (char *dir, char *geometry)
add_widget (desktop_dlg, panel);
set_new_current_panel (panel);
x_flush_events ();
return panel;
}
void
WPanel *
new_panel_at (char *dir)
{
new_panel_with_geometry_at (dir, NULL);
return new_panel_with_geometry_at (dir, NULL);
}
void

Просмотреть файл

@ -413,24 +413,34 @@ idle_create_panel (void *data)
return 0;
}
static int
idle_destroy_window (void *data)
{
WPanel *panel = data;
gnome_close_panel (GTK_WIDGET (panel->widget.wdata), panel);
return 0;
}
/*
* wrapper for new_panel_with_geometry_at.
* first invocation is called directly, further calls use
* the idle handler
*/
static void
static WPanel *
create_one_panel (char *dir, char *geometry)
{
static int first = 1;
if (first){
new_panel_with_geometry_at (dir, geometry);
first = 0;
return new_panel_with_geometry_at (dir, geometry);
} else {
dir_and_geometry *dg = g_new (dir_and_geometry, 1);
dg->dir = dir;
dg->geometry = geometry;
gtk_idle_add (idle_create_panel, dg);
return NULL;
}
}
@ -446,6 +456,7 @@ create_panels (void)
{
GList *p, *g;
char *geo;
WPanel *panel;
start_desktop ();
cmdline = command_new (0, 0, 0);
@ -465,9 +476,16 @@ create_panels (void)
geo = NULL;
create_one_panel (p->data, geo);
}
} else
create_one_panel (".", geometry_list ? geometry_list->data : NULL);
panel = NULL;
} else {
char *geometry = geometry_list ? geometry_list->data : NULL;
panel = create_one_panel (".", geometry);
if (nowindows){
gtk_idle_add (idle_destroy_window, panel);
panel->widget.options |= W_PANEL_HIDDEN;
}
}
g_list_free (directory_list);
g_list_free (geometry_list);
@ -516,6 +534,12 @@ session_save_state (GnomeClient *client, gint phase, GnomeRestartStyle save_styl
argv [i++] = buffer;
free_list = g_list_append (free_list, buffer);
}
/* If no windows were open */
if (i == 1){
argv [i++] = "--nowindows";
}
argv [i] = NULL;
gnome_client_set_clone_command (client, i, argv);
gnome_client_set_restart_command (client, i, argv);

Просмотреть файл

@ -8,6 +8,7 @@ int xtoolkit_init (int *argc, char *argv []);
int xtoolkit_end (void);
extern Dlg_head *desktop_dlg;
extern int nowindows;
/* Required by the standard code */
widget_data xtoolkit_create_dialog (Dlg_head *h, int with_grid);
@ -30,7 +31,8 @@ int translate_gdk_keysym_to_curses (GdkEventKey *event);
void gnome_init_panels ();
void set_current_panel (int index);
void bind_gtk_keys (GtkWidget *w, Dlg_head *h);
void new_panel_at (char *dir);
WPanel *new_panel_at (char *dir);
WPanel *new_panel_with_geometry_at (char *dir, char *geometry);
void layout_panel_gone (WPanel *panel);
struct gmc_color_pairs_s {

Просмотреть файл

@ -1363,7 +1363,8 @@ x_create_panel (Dlg_head *h, widget_data parent, WPanel *panel)
/* Now, insert our table in our parent */
gtk_container_add (GTK_CONTAINER (vbox), panel->table);
gtk_widget_show_all (gtk_widget_get_toplevel (panel->table));
if (!(panel->widget.options & W_PANEL_HIDDEN))
gtk_widget_show_all (gtk_widget_get_toplevel (panel->table));
if (!pixmaps_ready){
if (!GTK_WIDGET_REALIZED (panel->list))