diff --git a/src/common/connection_handlers.py b/src/common/connection_handlers.py
index f070d2480fbd7a89f0bd2ef2f95bb317a40cd031..507d63aae201e029742a2aed59726468619cfae4 100644
--- a/src/common/connection_handlers.py
+++ b/src/common/connection_handlers.py
@@ -2014,13 +2014,8 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
 						_('You are not in the members list in groupchat %s.') % \
 						room_jid))
 				elif errcode == '409': # nick conflict
-					# the jid_from in this case is FAKE JID: room_jid/nick
-					# resource holds the bad nick so propose a new one
-					proposed_nickname = resource + \
-						gajim.config.get('gc_proposed_nick_char')
 					room_jid = gajim.get_room_from_fjid(who)
-					self.dispatch('ASK_NEW_NICK', (room_jid, _('Unable to join group chat'),
-		_('Your desired nickname in group chat %s is in use or registered by another occupant.\nPlease specify another nickname below:') % room_jid, proposed_nickname))
+					self.dispatch('ASK_NEW_NICK', (room_jid,))
 				else:	# print in the window the error
 					self.dispatch('ERROR_ANSWER', ('', jid_stripped,
 						errmsg, errcode))
diff --git a/src/gajim.py b/src/gajim.py
index e56aadb6aedf87ea3d36be044edea3cf2a2e317a..6a7e37976cf812775fd5974bfa0a921481fb52be 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -536,17 +536,18 @@ class Interface:
 		dialogs.InformationDialog(data[0], data[1])
 
 	def handle_event_ask_new_nick(self, account, data):
-		#('ASK_NEW_NICK', account, (room_jid, title_text, prompt_text, proposed_nick))
+		#('ASK_NEW_NICK', account, (room_jid,))
 		room_jid = data[0]
-		title = data[1]
-		prompt = data[2]
-		proposed_nick = data[3]
 		gc_control = self.msg_win_mgr.get_gc_control(room_jid, account)
 		if not gc_control and \
 		room_jid in self.minimized_controls[account]:
 			gc_control = self.minimized_controls[account][room_jid]
 		if gc_control: # user may close the window before we are here
-			gc_control.show_change_nick_input_dialog(title, prompt, proposed_nick)
+			title = _('Unable to join group chat')
+			prompt = _('Your desired nickname in group chat %s is in use or '
+				'registered by another occupant.\nPlease specify another nickname '
+				'below:') % room_jid
+			gc_control.show_change_nick_input_dialog(title, prompt)
 
 	def handle_event_http_auth(self, account, data):
 		#('HTTP_AUTH', account, (method, url, transaction_id, iq_obj, msg))
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index 4aee3d7b328ecd66a6ff7075632854a8b5264101..6532ea5a064b00b90847b70f2816712e51b6d8c5 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -171,6 +171,7 @@ class GroupchatControl(ChatControlBase):
 
 		self.is_continued=is_continued
 		self.is_anonymous = True
+		self.change_nick_dialog = None
 
 		self.actions_button = self.xml.get_widget('muc_window_actions_button')
 		id = self.actions_button.connect('clicked', self.on_actions_button_clicked)
@@ -1589,10 +1590,14 @@ class GroupchatControl(ChatControlBase):
 		else:
 			return 'visitor'
 
-	def show_change_nick_input_dialog(self, title, prompt, proposed_nick = None):
+	def show_change_nick_input_dialog(self, title, prompt):
 		'''asks user for new nick and on ok it sets it on room'''
+		if self.change_nick_dialog:
+			# A dialog is already opened
+			return
 		def on_ok(widget):
-			nick = instance.input_entry.get_text().decode('utf-8')
+			nick = self.change_nick_dialog.input_entry.get_text().decode('utf-8')
+			self.change_nick_dialog = None
 			try:
 				nick = helpers.parse_resource(nick)
 			except:
@@ -1602,7 +1607,7 @@ class GroupchatControl(ChatControlBase):
 				return
 			gajim.connections[self.account].join_gc(nick, self.room_jid, None)
 			if gajim.gc_connected[self.account][self.room_jid]:
-				# We are changing nick, we will change self.nick when we receive 
+				# We are changing nick, we will change self.nick when we receive
 				# presence that inform that it works
 				self.new_nick = nick
 			else:
@@ -1610,9 +1615,12 @@ class GroupchatControl(ChatControlBase):
 				# change it NOW. We don't already have a nick so it's harmless
 				self.nick = nick
 		def on_cancel():
-			self.new_nick = '' 
-		instance = dialogs.InputDialog(title, prompt, proposed_nick,
-			is_modal = False, ok_handler = on_ok, cancel_handler = on_cancel)
+			self.change_nick_dialog = None
+			self.new_nick = ''
+		proposed_nick = self.nick + gajim.config.get('gc_proposed_nick_char')
+		self.change_nick_dialog = dialogs.InputDialog(title, prompt,
+			proposed_nick, is_modal=False, ok_handler=on_ok,
+			cancel_handler=on_cancel)
 
 	def minimize(self, status='offline'):
 		# Minimize it
@@ -1744,7 +1752,7 @@ class GroupchatControl(ChatControlBase):
 	def _on_change_nick_menuitem_activate(self, widget):
 		title = _('Changing Nickname')
 		prompt = _('Please specify the new nickname you want to use:')
-		self.show_change_nick_input_dialog(title, prompt, self.nick)
+		self.show_change_nick_input_dialog(title, prompt)
 
 	def _on_configure_room_menuitem_activate(self, widget):
 		c = gajim.contacts.get_gc_contact(self.account, self.room_jid, self.nick)