Add saving & restore of window position in config file
[hvgrip.git] / src / grip.c
index ee0fe2d..d217f55 100644 (file)
@@ -130,6 +130,8 @@ void DoSaveConfig(GripInfo *ginfo);
 {"win_height_edit",CFG_ENTRY_INT,0,&uinfo->win_height_edit},\
 {"win_width_min",CFG_ENTRY_INT,0,&uinfo->win_width_min},\
 {"win_height_min",CFG_ENTRY_INT,0,&uinfo->win_height_min},\
+{"win_pos_x",CFG_ENTRY_INT,0,&uinfo->x},\
+{"win_pos_y",CFG_ENTRY_INT,0,&uinfo->y},\
 {"vol_vis",CFG_ENTRY_BOOL,0,&uinfo->volvis},\
 {"track_edit_vis",CFG_ENTRY_BOOL,0,&uinfo->track_edit_visible},\
 {"track_prog_vis",CFG_ENTRY_BOOL,0,&uinfo->track_prog_visible},\
@@ -177,12 +179,8 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device,
   int major,minor,point;
   char buf[256];
 
-#ifdef CONVERSION_GNOME_TO_GTK
-  gnome_window_icon_set_default_from_file(GNOME_ICONDIR"/gripicon.png");
-#endif
-
   app = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
   ginfo=g_new0(GripInfo,1);
 
   gtk_object_set_user_data(GTK_OBJECT(app),(gpointer)ginfo);
@@ -271,6 +269,9 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device,
     }
   }
 
+  /* Position window from values in config file. */
+  gtk_window_move(GTK_WINDOW(app),uinfo->x, uinfo->y);
+
   gtk_widget_realize(app);
 
   uinfo->winbox=gtk_vbox_new(FALSE,3);
@@ -302,17 +303,19 @@ GtkWidget *GripNew(const gchar* geometry,char *device,char *scsi_device,
   uinfo->playopts=MakePlayOpts(ginfo);
   gtk_box_pack_start(GTK_BOX(uinfo->winbox),uinfo->playopts,FALSE,FALSE,0);
   if(uinfo->track_prog_visible) gtk_widget_show(uinfo->playopts);
+
   uinfo->controls=MakeControls(ginfo);
   if(uinfo->minimized)
     gtk_box_pack_start(GTK_BOX(uinfo->winbox),uinfo->controls,TRUE,TRUE,0);
   else
     gtk_box_pack_start(GTK_BOX(uinfo->winbox),uinfo->controls,FALSE,FALSE,0);
   gtk_widget_show(uinfo->controls);
-  
+
   gtk_container_add(GTK_CONTAINER(app), uinfo->winbox);
   gtk_widget_show(uinfo->winbox);
 
+  gtk_window_set_icon_from_file(GTK_WINDOW(app), GNOME_ICONDIR"/gripicon.png", NULL);
+
   CheckNewDisc(ginfo,FALSE);
 
   /* Check if we're running this version for the first time */
@@ -355,8 +358,10 @@ void GripDie(GtkWidget *widget,gpointer data)
 static void ReallyDie(gpointer data)
 {
   GripInfo *ginfo;
+  GripGUI *uinfo;
 
   ginfo=(GripInfo *)data;
+  uinfo = &(ginfo->gui_info);
 
 #ifndef GRIPCD
   if(ginfo->ripping_a_disc) KillRip(NULL,ginfo);
@@ -366,6 +371,9 @@ static void ReallyDie(gpointer data)
   if(!ginfo->no_interrupt)
     CDStop(&(ginfo->disc));
 
+  /* For saving the window position */
+  gtk_window_get_position(GTK_WINDOW(uinfo->app), &uinfo->x, &uinfo->y);
+
   DoSaveConfig(ginfo);
 
   gtk_main_quit();