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