diff --git a/src/dialogs.py b/src/dialogs.py
index 16ecc60f3..bf2f37943 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -718,6 +718,19 @@ _('You can not join a group chat unless you are connected.')).get_response()
elif room and server:
self.xml.get_widget('join_button').grab_focus()
+ self._empty_required_widgets = []
+ self._server_entry = self.xml.get_widget('server_entry')
+ self._room_entry = self.xml.get_widget('room_entry')
+ self._nickname_entry = self.xml.get_widget('nickname_entry')
+ if not self._server_entry.get_text():
+ self._empty_required_widgets.append(self._server_entry)
+ if not self._room_entry.get_text():
+ self._empty_required_widgets.append(self._room_entry)
+ if not self._nickname_entry.get_text():
+ self._empty_required_widgets.append(self._nickname_entry)
+ if len(self._empty_required_widgets):
+ self.xml.get_widget('join_button').set_sensitive(False)
+
self.window.show_all()
def on_join_groupchat_window_destroy(self, widget):
@@ -729,6 +742,16 @@ _('You can not join a group chat unless you are connected.')).get_response()
if event.keyval == gtk.keysyms.Escape: # ESCAPE
widget.destroy()
+ def on_required_entry_changed(self, widget):
+ if not widget.get_text():
+ self._empty_required_widgets.append(widget)
+ self.xml.get_widget('join_button').set_sensitive(False)
+ else:
+ if widget in self._empty_required_widgets:
+ self._empty_required_widgets.remove(widget)
+ if len(self._empty_required_widgets) == 0:
+ self.xml.get_widget('join_button').set_sensitive(True)
+
def on_room_entry_key_press_event(self, widget, event):
# Check for pressed @ and jump to server_entry if found
if event.keyval == gtk.keysyms.at:
diff --git a/src/gtkgui.glade b/src/gtkgui.glade
index 22375c7f1..b47e79f21 100644
--- a/src/gtkgui.glade
+++ b/src/gtkgui.glade
@@ -9434,6 +9434,7 @@ Custom
*
True
+
1
@@ -9457,6 +9458,7 @@ Custom
*
True
+
1
@@ -9478,6 +9480,7 @@ Custom
True
*
True
+
1