SM now supports no-windows-open setup -mig
Этот коммит содержится в:
родитель
79455c64d7
Коммит
540e850b31
@ -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,7 +456,8 @@ create_panels (void)
|
||||
{
|
||||
GList *p, *g;
|
||||
char *geo;
|
||||
|
||||
WPanel *panel;
|
||||
|
||||
start_desktop ();
|
||||
cmdline = command_new (0, 0, 0);
|
||||
the_hint = label_new (0, 0, 0, NULL);
|
||||
@ -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))
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user