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>
|
1998-04-30 Miguel de Icaza <miguel@nuclecu.unam.mx>
|
||||||
|
|
||||||
* gtrans.c (make_transparent_window): Put hack back.
|
* gtrans.c (make_transparent_window): Put hack back.
|
||||||
|
@ -439,7 +439,7 @@ create_container (Dlg_head *h, char *name, char *geometry)
|
|||||||
return panel;
|
return panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
WPanel *
|
||||||
new_panel_with_geometry_at (char *dir, char *geometry)
|
new_panel_with_geometry_at (char *dir, char *geometry)
|
||||||
{
|
{
|
||||||
WPanel *panel;
|
WPanel *panel;
|
||||||
@ -449,12 +449,14 @@ new_panel_with_geometry_at (char *dir, char *geometry)
|
|||||||
add_widget (desktop_dlg, panel);
|
add_widget (desktop_dlg, panel);
|
||||||
set_new_current_panel (panel);
|
set_new_current_panel (panel);
|
||||||
x_flush_events ();
|
x_flush_events ();
|
||||||
|
|
||||||
|
return panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
WPanel *
|
||||||
new_panel_at (char *dir)
|
new_panel_at (char *dir)
|
||||||
{
|
{
|
||||||
new_panel_with_geometry_at (dir, NULL);
|
return new_panel_with_geometry_at (dir, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -413,24 +413,34 @@ idle_create_panel (void *data)
|
|||||||
return 0;
|
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.
|
* wrapper for new_panel_with_geometry_at.
|
||||||
* first invocation is called directly, further calls use
|
* first invocation is called directly, further calls use
|
||||||
* the idle handler
|
* the idle handler
|
||||||
*/
|
*/
|
||||||
static void
|
static WPanel *
|
||||||
create_one_panel (char *dir, char *geometry)
|
create_one_panel (char *dir, char *geometry)
|
||||||
{
|
{
|
||||||
static int first = 1;
|
static int first = 1;
|
||||||
|
|
||||||
if (first){
|
if (first){
|
||||||
new_panel_with_geometry_at (dir, geometry);
|
|
||||||
first = 0;
|
first = 0;
|
||||||
|
return new_panel_with_geometry_at (dir, geometry);
|
||||||
} else {
|
} else {
|
||||||
dir_and_geometry *dg = g_new (dir_and_geometry, 1);
|
dir_and_geometry *dg = g_new (dir_and_geometry, 1);
|
||||||
dg->dir = dir;
|
dg->dir = dir;
|
||||||
dg->geometry = geometry;
|
dg->geometry = geometry;
|
||||||
gtk_idle_add (idle_create_panel, dg);
|
gtk_idle_add (idle_create_panel, dg);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,7 +456,8 @@ create_panels (void)
|
|||||||
{
|
{
|
||||||
GList *p, *g;
|
GList *p, *g;
|
||||||
char *geo;
|
char *geo;
|
||||||
|
WPanel *panel;
|
||||||
|
|
||||||
start_desktop ();
|
start_desktop ();
|
||||||
cmdline = command_new (0, 0, 0);
|
cmdline = command_new (0, 0, 0);
|
||||||
the_hint = label_new (0, 0, 0, NULL);
|
the_hint = label_new (0, 0, 0, NULL);
|
||||||
@ -465,9 +476,16 @@ create_panels (void)
|
|||||||
geo = NULL;
|
geo = NULL;
|
||||||
create_one_panel (p->data, geo);
|
create_one_panel (p->data, geo);
|
||||||
}
|
}
|
||||||
} else
|
panel = NULL;
|
||||||
create_one_panel (".", geometry_list ? geometry_list->data : 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 (directory_list);
|
||||||
g_list_free (geometry_list);
|
g_list_free (geometry_list);
|
||||||
|
|
||||||
@ -516,6 +534,12 @@ session_save_state (GnomeClient *client, gint phase, GnomeRestartStyle save_styl
|
|||||||
argv [i++] = buffer;
|
argv [i++] = buffer;
|
||||||
free_list = g_list_append (free_list, buffer);
|
free_list = g_list_append (free_list, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If no windows were open */
|
||||||
|
if (i == 1){
|
||||||
|
argv [i++] = "--nowindows";
|
||||||
|
}
|
||||||
|
|
||||||
argv [i] = NULL;
|
argv [i] = NULL;
|
||||||
gnome_client_set_clone_command (client, i, argv);
|
gnome_client_set_clone_command (client, i, argv);
|
||||||
gnome_client_set_restart_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);
|
int xtoolkit_end (void);
|
||||||
|
|
||||||
extern Dlg_head *desktop_dlg;
|
extern Dlg_head *desktop_dlg;
|
||||||
|
extern int nowindows;
|
||||||
|
|
||||||
/* Required by the standard code */
|
/* Required by the standard code */
|
||||||
widget_data xtoolkit_create_dialog (Dlg_head *h, int with_grid);
|
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 gnome_init_panels ();
|
||||||
void set_current_panel (int index);
|
void set_current_panel (int index);
|
||||||
void bind_gtk_keys (GtkWidget *w, Dlg_head *h);
|
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);
|
void layout_panel_gone (WPanel *panel);
|
||||||
|
|
||||||
struct gmc_color_pairs_s {
|
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 */
|
/* Now, insert our table in our parent */
|
||||||
gtk_container_add (GTK_CONTAINER (vbox), panel->table);
|
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 (!pixmaps_ready){
|
||||||
if (!GTK_WIDGET_REALIZED (panel->list))
|
if (!GTK_WIDGET_REALIZED (panel->list))
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user