Philipp Hörist pushed to branch master at gajim / gajim
Commits:
9314a054 by Philipp Hörist at 2018-03-24T01:47:03+01:00
Add non-compliant mam:2 MUCs to blacklist
For MUCs on the blacklist we do a deduplication not depending on
stanza-id
This patch is only for current Prosody 0.10 stable and the mod_mam_muc
module which does not add stanza-id to the messages.
This can be removed once Prosody 0.11 hits or the module is updated
- - - - -
af2c66b5 by Philipp Hörist at 2018-03-24T02:36:22+01:00
Improve disabling autoscroll
Add the SHIFT + PAGE_UP keypress
Fix catching mouse scroll UP on some systems
- - - - -
5 changed files:
- gajim/chat_control_base.py
- gajim/common/config.py
- gajim/common/connection_handlers.py
- gajim/common/helpers.py
- gajim/common/message_archiving.py
Changes:
=====================================
gajim/chat_control_base.py
=====================================
--- a/gajim/chat_control_base.py
+++ b/gajim/chat_control_base.py
@@ -596,9 +596,12 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
valid, entries = self.keymap.get_entries_for_keyval(event.keyval)
keycode = entries[0].keycode
if (event.get_state() & Gdk.ModifierType.CONTROL_MASK and keycode in (
- self.keycode_c, self.keycode_ins)) or (
- event.get_state() & Gdk.ModifierType.SHIFT_MASK and \
- event.keyval in (Gdk.KEY_Page_Down, Gdk.KEY_Page_Up)):
+ self.keycode_c, self.keycode_ins)):
+ return False
+
+ if event.get_state() & Gdk.ModifierType.SHIFT_MASK and \
+ event.keyval in (Gdk.KEY_Page_Down, Gdk.KEY_Page_Up):
+ self._on_scroll(None, event.keyval)
return False
self.parent_win.notebook.event(event)
return True
@@ -1224,6 +1227,7 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
if pos != Gtk.PositionType.BOTTOM:
return
# Remove all events and set autoscroll True
+ app.log('autoscroll').info('Autoscroll enabled')
self.conv_textview.autoscroll = True
if self.resource:
jid = self.contact.get_full_jid()
@@ -1253,13 +1257,27 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
self.redraw_after_event_removed(jid)
def _on_scroll(self, widget, event):
- # On scrolliung UP disable autoscroll
- has_direction, direction = event.get_scroll_direction()
- if has_direction and direction == Gdk.ScrollDirection.UP:
- # Check if we have a Scrollbar
- adjustment = self.conv_scrolledwindow.get_vadjustment()
- if adjustment.get_upper() != adjustment.get_page_size():
- self.conv_textview.autoscroll = False
+ if not self.conv_textview.autoscroll:
+ # autoscroll is already disabled
+ return
+
+ if widget is None:
+ # call from _conv_textview_key_press_event()
+ # SHIFT + Gdk.KEY_Page_Up
+ if event != Gdk.KEY_Page_Up:
+ return
+ else:
+ # On scrolliung UP disable autoscroll
+ # has_direction is on some systems always False
+ # so we cant use it
+ has_direction, direction = event.get_scroll_direction()
+ if direction != Gdk.ScrollDirection.UP:
+ return
+ # Check if we have a Scrollbar
+ adjustment = self.conv_scrolledwindow.get_vadjustment()
+ if adjustment.get_upper() != adjustment.get_page_size():
+ app.log('autoscroll').info('Autoscroll disabled')
+ self.conv_textview.autoscroll = False
def on_conversation_vadjustment_changed(self, adjustment):
self.scroll_to_end()
=====================================
gajim/common/config.py
=====================================
--- a/gajim/common/config.py
+++ b/gajim/common/config.py
@@ -305,6 +305,7 @@ class Config:
'use_keyring': [opt_bool, True, _('If True, Gajim will use the Systems Keyring to store account passwords.')],
'pgp_encoding': [ opt_str, '', _('Sets the encoding used by python-gnupg'), True],
'remote_commands': [opt_bool, False, _('If True, Gajim will execute XEP-0146 Commands.')],
+ 'mam_blacklist': [opt_str, '', _('All non-compliant MAM Groupchats')],
}, {})
__options_per_key = {
=====================================
gajim/common/connection_handlers.py
=====================================
--- a/gajim/common/connection_handlers.py
+++ b/gajim/common/connection_handlers.py
@@ -1067,9 +1067,17 @@ class ConnectionHandlersBase:
conn=self, msg_obj=obj, stanza_id=obj.unique_id))
return True
+ def _check_for_mam_compliance(self, room_jid, stanza_id):
+ namespace = muc_caps_cache.get_mam_namespace(room_jid)
+ if stanza_id is None and namespace == nbxmpp.NS_MAM_2:
+ helpers.add_to_mam_blacklist(room_jid)
+
def _nec_gc_message_received(self, obj):
if obj.conn.name != self.name:
return
+
+ self._check_for_mam_compliance(obj.jid, obj.unique_id)
+
if (app.config.should_log(obj.conn.name, obj.jid) and
obj.msgtxt and obj.nick):
# if not obj.nick, it means message comes from room itself
=====================================
gajim/common/helpers.py
=====================================
--- a/gajim/common/helpers.py
+++ b/gajim/common/helpers.py
@@ -1626,3 +1626,21 @@ def get_emoticon_theme_path(theme):
emoticons_user_path = os.path.join(app.MY_EMOTS_PATH, theme)
if os.path.exists(emoticons_user_path):
return emoticons_user_path
+
+def add_to_mam_blacklist(jid):
+ config_value = app.config.get('mam_blacklist')
+ if not config_value:
+ config_value = [jid]
+ else:
+ if jid in config_value:
+ return
+ config_value = config_value.split(',')
+ config_value.append(jid)
+ log.warning('Found not-compliant MUC. %s added to MAM Blacklist', jid)
+ app.config.set('mam_blacklist', ','.join(config_value))
+
+def get_mam_blacklist():
+ config_value = app.config.get('mam_blacklist')
+ if not config_value:
+ return []
+ return config_value.split(',')
=====================================
gajim/common/message_archiving.py
=====================================
--- a/gajim/common/message_archiving.py
+++ b/gajim/common/message_archiving.py
@@ -25,6 +25,7 @@ import nbxmpp
from gajim.common import app
from gajim.common import ged
+from gajim.common import helpers
from gajim.common.logger import KindConstant, JIDConstant
from gajim.common.const import ArchiveState
from gajim.common.caps_cache import muc_caps_cache
@@ -205,7 +206,8 @@ class ConnectionArchive313:
if obj.groupchat:
namespace = muc_caps_cache.get_mam_namespace(obj.room_jid)
- if namespace != nbxmpp.NS_MAM_2:
+ blacklisted = obj.room_jid in helpers.get_mam_blacklist()
+ if namespace != nbxmpp.NS_MAM_2 or blacklisted:
# Fallback duplicate search without stanza-id
duplicate = app.logger.search_for_duplicate(
self.name, obj.with_, obj.timestamp, obj.msgtxt)
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/4e1a9db6ccd71d095520a74ed1f603099…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/4e1a9db6ccd71d095520a74ed1f603099…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
b3e6170e by Philipp Hörist at 2018-03-24T00:17:34+01:00
Remove cacert.pem
Dont ship cacerts, use certifi on Windows
- - - - -
2 changed files:
- gajim/common/connection.py
- − gajim/data/other/cacerts.pem
Changes:
=====================================
gajim/common/connection.py
=====================================
--- a/gajim/common/connection.py
+++ b/gajim/common/connection.py
@@ -71,6 +71,9 @@ from gajim.gtkgui_helpers import get_action
if app.HAVE_PYOPENSSL:
import OpenSSL.crypto
+if os.name == 'nt':
+ import certifi
+
from nbxmpp import Smacks
from string import Template
import logging
@@ -1210,9 +1213,10 @@ class Connection(CommonConnection, ConnectionHandlers):
self._current_type = self._current_host['type']
port = self._current_host['port']
- cacerts = os.path.join(common.app.DATA_DIR, 'other', 'cacerts.pem')
- if not os.path.exists(cacerts):
- cacerts = ''
+
+ cacerts = ''
+ if os.name == 'nt':
+ cacerts = certifi.where()
mycerts = common.app.MY_CACERTS
tls_version = app.config.get_per('accounts', self.name,
'tls_version')
=====================================
gajim/data/other/cacerts.pem deleted
=====================================
The diff for this file was not included because it is too large.
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/b3e6170e57798955edd01e111dd71da017…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/b3e6170e57798955edd01e111dd71da017…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
e0256719 by Philipp Hörist at 2018-03-23T00:41:15+01:00
Refactor resizing MUC rosters
Dont trigger resizes on notify::position, because the absolut
handle position changes also on window resizes, but the relative handle
position doesnt change.
Instead we use the notify::position event now to save the new position
to the config file and use left button release event (release of the handle after dragging)
and the window maximize/minimize event to trigger resizes in all controls
This fixes also fixes a issue where a previously hidden roster was shown again
if a new tab was opened.
Fixes #8984
- - - - -
2 changed files:
- gajim/data/gui/groupchat_control.ui
- gajim/groupchat_control.py
Changes:
=====================================
gajim/data/gui/groupchat_control.ui
=====================================
--- a/gajim/data/gui/groupchat_control.ui
+++ b/gajim/data/gui/groupchat_control.ui
@@ -95,7 +95,8 @@
<property name="can_focus">True</property>
<property name="position">495</property>
<property name="position_set">True</property>
- <signal name="notify" handler="on_hpaned_notify" swapped="no"/>
+ <signal name="button-release-event" handler="_on_hpaned_release_button" swapped="no"/>
+ <signal name="notify::position" handler="_on_hpaned_handle_change" swapped="no"/>
<child>
<object class="GtkBox" id="gc_textviews_vbox">
<property name="width_request">0</property>
@@ -396,7 +397,7 @@
</child>
</object>
<packing>
- <property name="resize">False</property>
+ <property name="resize">True</property>
<property name="shrink">False</property>
</packing>
</child>
@@ -405,6 +406,7 @@
<property name="width_request">100</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="no_show_all">True</property>
<property name="margin_left">4</property>
<property name="margin_bottom">5</property>
<property name="hscrollbar_policy">never</property>
=====================================
gajim/groupchat_control.py
=====================================
--- a/gajim/groupchat_control.py
+++ b/gajim/groupchat_control.py
@@ -320,18 +320,23 @@ class GroupchatControl(ChatControlBase):
# Keep error dialog instance to be sure to have only once at a time
self.error_dialog = None
+ # Source id for saving the handle position
+ self._handle_timeout_id = None
+
self.emoticons_button = self.xml.get_object('emoticons_button')
self.toggle_emoticons()
formattings_button = self.xml.get_object('formattings_button')
formattings_button.set_sensitive(False)
+ self._state_change_handler_id = None
if parent_win is not None:
# On AutoJoin with minimize Groupchats are created without parent
# Tooltip Window and Actions have to be created with parent
self.set_tooltip()
self.add_actions()
self.scale_factor = parent_win.window.get_scale_factor()
+ self._connect_window_state_change(parent_win)
else:
self.scale_factor = app.interface.roster.scale_factor
@@ -400,17 +405,12 @@ class GroupchatControl(ChatControlBase):
id_ = self.list_treeview.connect('style-set',
self.on_list_treeview_style_set)
self.handlers[id_] = self.list_treeview
- self.resize_from_another_muc = False
- # we want to know when the the widget resizes, because that is
- # an indication that the hpaned has moved...
- self.hpaned = self.xml.get_object('hpaned')
- id_ = self.hpaned.connect('notify', self.on_hpaned_notify)
- self.handlers[id_] = self.hpaned
- if app.config.get('hide_groupchat_occupants_list'):
- # Hide the roster by default
- self.hpaned.get_child2().set_no_show_all(True)
- self.hpaned.get_child2().hide()
+ # flag that stops hpaned position event
+ # when the handle gets resized in another control
+ self._resize_from_another_muc = False
+
+ self.hpaned = self.xml.get_object('hpaned')
# set the position of the current hpaned
hpaned_position = app.config.get('gc-hpaned-position')
@@ -490,7 +490,7 @@ class GroupchatControl(ChatControlBase):
# Banner
self.banner_actionbar = self.xml.get_object('banner_actionbar')
self.hide_roster_button = Gtk.Button.new_from_icon_name(
- 'go-previous-symbolic', Gtk.IconSize.MENU)
+ 'go-next-symbolic', Gtk.IconSize.MENU)
self.hide_roster_button.connect('clicked',
lambda *args: self.show_roster())
self.subject_button = Gtk.MenuButton()
@@ -534,6 +534,11 @@ class GroupchatControl(ChatControlBase):
self.update_ui()
self.widget.show_all()
+
+ if app.config.get('hide_groupchat_occupants_list'):
+ # Roster is shown by default, so toggle the roster button to hide it
+ self.show_roster()
+
# PluginSystem: adding GUI extension point for this GroupchatControl
# instance object
app.plugin_manager.gui_extension_point('groupchat_control', self)
@@ -636,6 +641,13 @@ class GroupchatControl(ChatControlBase):
tooltip_text = _('No File Transfer available')
self.sendfile_button.set_tooltip_text(tooltip_text)
+
+ def _connect_window_state_change(self, parent_win):
+ if self._state_change_handler_id is None:
+ id_ = parent_win.window.connect('notify::is-maximized',
+ self._on_window_state_change)
+ self._state_change_handler_id = id_
+
# Actions
def _on_change_subject(self, action, param):
@@ -756,6 +768,7 @@ class GroupchatControl(ChatControlBase):
self.update_actions()
self.set_lock_image()
self._schedule_activity_timers()
+ self._connect_window_state_change(self.parent_win)
def set_tooltip(self):
widget = self.xml.get_object('list_treeview')
@@ -875,27 +888,37 @@ class GroupchatControl(ChatControlBase):
menu.show_all()
def resize_occupant_treeview(self, position):
- self.resize_from_another_muc = True
+ if self.hpaned.get_position() == position:
+ return
+ self._resize_from_another_muc = True
self.hpaned.set_position(position)
- def reset_flag():
- self.resize_from_another_muc = False
+ def _reset_flag():
+ self._resize_from_another_muc = False
# Reset the flag when everything will be redrawn, and in particular when
# on_treeview_size_allocate will have been called.
- GLib.idle_add(reset_flag)
+ GLib.timeout_add(500, _reset_flag)
- def on_hpaned_notify(self, pane, gparamspec):
- """
- The MUC treeview has resized. Move the hpaned in all tabs to match
- """
- # print pane, dir(pane)
- #if gparamspec.name != 'position':
- #return
- if self.resize_from_another_muc:
- # Don't send the event to other MUC
+ def _on_window_state_change(self, win, param):
+ # Add with timeout, because state change happens before
+ # the hpaned notifys us about a new handle position
+ GLib.timeout_add(100, self._check_for_resize)
+
+ def _on_hpaned_release_button(self, hpaned, event):
+ if event.get_button()[1] != 1:
+ # We want only to catch the left mouse button
return
+ self._check_for_resize()
- hpaned_position = self.hpaned.get_position()
- app.config.set('gc-hpaned-position', hpaned_position)
+ def _check_for_resize(self):
+ # Check if we have a new position
+ pos = self.hpaned.get_position()
+ if pos == app.config.get('gc-hpaned-position'):
+ return
+
+ # Save new position
+ self._remove_handle_timeout()
+ app.config.set('gc-hpaned-position', pos)
+ # Resize other MUC rosters
for account in app.gc_connected:
for room_jid in [i for i in app.gc_connected[account] if \
app.gc_connected[account][i] and i != self.room_jid]:
@@ -905,7 +928,28 @@ class GroupchatControl(ChatControlBase):
app.interface.minimized_controls[account]:
ctrl = app.interface.minimized_controls[account][room_jid]
if ctrl and app.config.get('one_message_window') != 'never':
- ctrl.resize_occupant_treeview(hpaned_position)
+ ctrl.resize_occupant_treeview(pos)
+
+ def _on_hpaned_handle_change(self, hpaned, param):
+ if self._resize_from_another_muc:
+ return
+ # Window was resized, save new handle pos
+ pos = hpaned.get_position()
+ if pos != app.config.get('gc-hpaned-position'):
+ self._remove_handle_timeout(renew=True)
+
+ def _remove_handle_timeout(self, renew=False):
+ if self._handle_timeout_id is not None:
+ GLib.source_remove(self._handle_timeout_id)
+ self._handle_timeout_id = None
+ if renew:
+ pos = self.hpaned.get_position()
+ self._handle_timeout_id = GLib.timeout_add_seconds(
+ 2, self._save_handle_position, pos)
+
+ def _save_handle_position(self, pos):
+ self._handle_timeout_id = None
+ app.config.set('gc-hpaned-position', pos)
def iter_contact_rows(self):
"""
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/e0256719aeb0b75a2fc919016341e9eb12…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/e0256719aeb0b75a2fc919016341e9eb12…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
a218864d by Philipp Hörist at 2018-03-21T19:53:07+01:00
Add stanza to log output in case of an error
- - - - -
1 changed file:
- gajim/common/connection_handlers_events.py
Changes:
=====================================
gajim/common/connection_handlers_events.py
=====================================
--- a/gajim/common/connection_handlers_events.py
+++ b/gajim/common/connection_handlers_events.py
@@ -1080,12 +1080,14 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
'delay', 'stamp', namespace=nbxmpp.NS_DELAY2)
if delay is None:
log.error('Received MAM message without timestamp')
+ log.error(self.stanza)
return
self.timestamp = helpers.parse_datetime(
delay, check_utc=True, epoch=True)
if self.timestamp is None:
log.error('Received MAM message with invalid timestamp: %s', delay)
+ log.error(self.stanza)
return
# Save timestamp added by the user
@@ -1097,6 +1099,7 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
if self.user_timestamp is None:
log.warning('Received MAM message with '
'invalid user timestamp: %s', user_delay)
+ log.warning(self.stanza)
log.debug('Received mam-message: unique id: %s', self.unique_id)
return True
@@ -1175,12 +1178,14 @@ class MamGcMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
'delay', 'stamp', namespace=nbxmpp.NS_DELAY2)
if delay is None:
log.error('Received MAM message without timestamp')
+ log.error(self.stanza)
return
self.timestamp = helpers.parse_datetime(
delay, check_utc=True, epoch=True)
if self.timestamp is None:
log.error('Received MAM message with invalid timestamp: %s', delay)
+ log.error(self.stanza)
return
# Save timestamp added by the user
@@ -1192,6 +1197,7 @@ class MamGcMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
if self.user_timestamp is None:
log.warning('Received MAM message with '
'invalid user timestamp: %s', user_delay)
+ log.warning(self.stanza)
log.debug('Received mam-gc-message: unique id: %s', self.unique_id)
return True
@@ -1227,6 +1233,7 @@ class MamDecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
# run into an endless loop
if hasattr(self, 'disco'):
log.error('JID not known even after sucessful disco')
+ log.error(self.with_.getStripped())
return
# we don't know this JID, we need to disco it.
server = self.with_.getDomain()
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/a218864d91e29c53dcb1f22cc223237b2f…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/a218864d91e29c53dcb1f22cc223237b2f…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
c6172c86 by Andrey Gursky at 2018-03-21T19:40:54+01:00
Fix window position restore on multi-head setups
Gajim stopped to properly restore roster and dialogs windows positions
after restart with more than one monitor attached.
Gajim saves the absolute window positions, i.e. based on the total screen size
of all monitors attached. Despite Gtk deprecated Gdk.Screen.width() and height(),
we cannot just use width() and height() for one monitor, as recommended.
We still need the total screen size, which was the base for saving the positions.
[1] https://stackoverflow.com/questions/30207586/gdk-screen-vs-monitor-vs-displ…
- - - - -
2 changed files:
- gajim/dialogs.py
- gajim/gtkgui_helpers.py
Changes:
=====================================
gajim/dialogs.py
=====================================
--- a/gajim/dialogs.py
+++ b/gajim/dialogs.py
@@ -3179,7 +3179,7 @@ class PopupNotificationWindow:
window_width, self.window_height = self.window.get_size()
app.interface.roster.popups_notification_height += self.window_height
pos_x = app.config.get('notification_position_x')
- screen_w, screen_h = gtkgui_helpers.get_display_geometry()
+ screen_w, screen_h = gtkgui_helpers.get_total_screen_geometry()
if pos_x < 0:
pos_x = screen_w - window_width + pos_x + 1
pos_y = app.config.get('notification_position_y')
@@ -3216,7 +3216,7 @@ class PopupNotificationWindow:
current_index += 1
window_width, window_height = window_instance.window.get_size()
app.interface.roster.popups_notification_height += window_height
- screen_w, screen_h = gtkgui_helpers.get_display_geometry()
+ screen_w, screen_h = gtkgui_helpers.get_total_screen_geometry()
window_instance.window.move(screen_w - window_width,
screen_h - \
app.interface.roster.popups_notification_height)
=====================================
gajim/gtkgui_helpers.py
=====================================
--- a/gajim/gtkgui_helpers.py
+++ b/gajim/gtkgui_helpers.py
@@ -100,11 +100,10 @@ if os.name == 'nt':
from gajim.common import helpers
-def get_display_geometry():
- display = Gdk.Display.get_default()
- monitor = display.get_monitor(0)
- geometry = monitor.get_geometry()
- return geometry.width, geometry.height
+def get_total_screen_geometry():
+ screen = Gdk.Screen.get_default()
+ window = Gdk.Screen.get_root_window(screen)
+ return window.get_width(), window.get_height()
def add_image_to_button(button, icon_name):
img = Gtk.Image()
@@ -175,7 +174,7 @@ def move_window(window, x, y):
"""
Move the window, but also check if out of screen
"""
- screen_w, screen_h = get_display_geometry()
+ screen_w, screen_h = get_total_screen_geometry()
if x < 0:
x = 0
if y < 0:
@@ -191,7 +190,7 @@ def resize_window(window, w, h):
"""
Resize window, but also checks if huge window or negative values
"""
- screen_w, screen_h = get_display_geometry()
+ screen_w, screen_h = get_total_screen_geometry()
if not w or not h:
return
if w > screen_w:
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/c6172c86adc07ad2a4be1fd84004c00af3…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/c6172c86adc07ad2a4be1fd84004c00af3…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
8d583a18 by Andrey Gursky at 2018-03-21T19:30:21+01:00
Fixup for History Manager
Only call Gtk.main_quit() if History Manager is running standalone.
- - - - -
1 changed file:
- gajim/history_manager.py
Changes:
=====================================
gajim/history_manager.py
=====================================
--- a/gajim/history_manager.py
+++ b/gajim/history_manager.py
@@ -225,16 +225,19 @@ class HistoryManager:
def on_history_manager_window_delete_event(self, widget, event):
if not self.AT_LEAST_ONE_DELETION_DONE:
- Gtk.main_quit()
+ if __name__ == '__main__':
+ Gtk.main_quit()
return
def on_yes(clicked):
self.cur.execute('VACUUM')
self.con.commit()
- Gtk.main_quit()
+ if __name__ == '__main__':
+ Gtk.main_quit()
def on_no():
- Gtk.main_quit()
+ if __name__ == '__main__':
+ Gtk.main_quit()
dialog = dialogs.YesNoDialog(
_('Do you want to clean up the database? '
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/8d583a180161b37e6b01991d3a982772ee…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/8d583a180161b37e6b01991d3a982772ee…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
57d4ddcd by Philipp Hörist at 2018-03-21T19:17:15+01:00
Commandline args are always type str in Python3
Fixes #8970
- - - - -
1 changed file:
- gajim/gajim_remote.py
Changes:
=====================================
gajim/gajim_remote.py
=====================================
--- a/gajim/gajim_remote.py
+++ b/gajim/gajim_remote.py
@@ -480,8 +480,7 @@ class GajimRemote:
"""
Calls self.method with arguments from sys.argv[2:]
"""
- args = [i.decode(PREFERRED_ENCODING) for i in self.arguments]
- args = [dbus.String(i) for i in args]
+ args = [dbus.String(i) for i in self.arguments]
try:
res = self.method(*args)
return res
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/57d4ddcd578b406ec445b9ce158d23ce88…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/57d4ddcd578b406ec445b9ce158d23ce88…
You're receiving this email because of your account on dev.gajim.org.