priv = GET_PRIV (window);
- /* Only save geometry information if there is ONE chat visible. */
- if (g_list_length (priv->chats) > 1) {
- return FALSE;
- }
-
if (priv->save_geometry_id != 0) {
g_source_remove (priv->save_geometry_id);
}
EmpathyChat *chat)
{
EmpathyChatWindowPriv *priv;
- GtkWidget *label;
- GtkWidget *child;
+ GtkWidget *label;
+ GtkWidget *child;
+ gint x, y, w, h;
g_return_if_fail (window != NULL);
g_return_if_fail (EMPATHY_IS_CHAT (chat));
/* Set the chat window */
empathy_chat_set_window (chat, window);
- if (g_list_length (priv->chats) == 0) {
- gint x, y, w, h;
+ empathy_chat_load_geometry (chat, &x, &y, &w, &h);
- empathy_chat_load_geometry (chat, &x, &y, &w, &h);
-
- if (x >= 0 && y >= 0) {
- /* Let the window manager position it if we don't have
- * good x, y coordinates.
- */
- gtk_window_move (GTK_WINDOW (priv->dialog), x, y);
- }
+ if (x >= 0 && y >= 0) {
+ /* Let the window manager position it if we don't have
+ * good x, y coordinates.
+ */
+ gtk_window_move (GTK_WINDOW (priv->dialog), x, y);
+ }
- if (w > 0 && h > 0) {
- /* Use the defaults from the glade file if we don't have
- * good w, h geometry.
- */
- gtk_window_resize (GTK_WINDOW (priv->dialog), w, h);
- }
+ if (w > 0 && h > 0) {
+ /* Use the defaults from the glade file if we don't have
+ * good w, h geometry.
+ */
+ gtk_window_resize (GTK_WINDOW (priv->dialog), w, h);
}
child = empathy_chat_get_widget (chat);
return (priv->tp_chat != NULL);
}
+static const gchar *
+chat_get_window_id_for_geometry (EmpathyChat *chat)
+{
+ gboolean separate_windows;
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS,
+ &separate_windows);
+
+ if (separate_windows) {
+ return empathy_chat_get_id (chat);
+ } else {
+ return "chat-window";
+ }
+}
+
void
empathy_chat_save_geometry (EmpathyChat *chat,
gint x,
gint w,
gint h)
{
- empathy_geometry_save (empathy_chat_get_id (chat), x, y, w, h);
+ empathy_geometry_save (chat_get_window_id_for_geometry (chat), x, y, w, h);
}
void
gint *w,
gint *h)
{
- empathy_geometry_load (empathy_chat_get_id (chat), x, y, w, h);
+ empathy_geometry_load (chat_get_window_id_for_geometry (chat), x, y, w, h);
}
static gboolean