Description: Git pull from upstream to fix miscellaneous bugs and typos.
.
 sunflower (0.5.63-git20230412~mx23) mx; urgency=medium
 .
   * New upstream release
   * Build for MX-23
Author: Timothy E. Harris <maintainer@mxrepo.com>

---
The information above should follow the Patch Tagging Guidelines, please
checkout https://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: (upstream|backport|vendor|other), (<patch-url>|commit:<commit-id>)
Bug: <upstream-bugtracker-url>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: (no|not-needed|<patch-forwarded-url>)
Applied-Upstream: <version>, (<commit-url>|commit:<commid-id>)
Reviewed-By: <name and email of someone who approved/reviewed the patch>
Last-Update: 2023-06-04

--- sunflower-0.5.63.orig/CHANGES
+++ sunflower-0.5.63/CHANGES
@@ -298,7 +298,7 @@ Version 0.1a-50
   * Set cursor on first menu item in bookmarks menu.
   * Select first extension in column editor.
   * Properly detect file type when preparing popup menu.
-  * Lazy command forking to avoid problems with programs wich measure size of terminal window.
+  * Lazy command forking to avoid problems with programs which measure size of terminal window.
   * Get list of selected items before starting operation to avoid potential problems.
   * Fixed problem with removing files on remote file systems.
   * Check for supported options in providers and only allow supported in copy/move dialog.
@@ -372,7 +372,7 @@ Version 0.1a-44
   + Samba extension for mount manager. Editing and removing still doesn't work.
   + Volumes extension for mount manager.
   + "Copy/move to other" context menu options.
-  + Ability to disable red color when starting program with superuser priviledges.
+  + Ability to disable red color when starting program with superuser privileges.
   * Fixed mount manager to properly handle different extensions.
   * Properly handle all exceptions in delete operation.
   * Ask user what to do when trashing files is not possible.
@@ -429,13 +429,13 @@ Version 0.1a-41
   + Created simple file viewer.
   + Show information dialog when compared directories are identical.
   + Added support for selecting items using Shift + Up/Down arrows.
-  * Sessions: Fix for problem occured after change of way tabs are stored
+  * Sessions: Fix for problem occurred after change of way tabs are stored
   * Updated Russian translation.
   * Fixed random crashes when inheriting path. (issue #175)
   * Properly handle toggle selection when assigned to key other than default. (issue #176)
   * Updated Polish translation
   * Fix random crashes when closing tab with keyboard accelerator.
-  * Fixed problem with list grabing focus on path change.
+  * Fixed problem with list grabbing focus on path change.
   * Properly form bookmark replacement list to include home directory key bindings editor.
   * Fixed problem with Ubuntu coloring method.
   * Changed default search modifier.
@@ -575,7 +575,7 @@ Version 0.1a-33
   + Support for rename extension reordering
   + Find files tool
   + Keybindings editor
-  + Open path from history browser in oposite list
+  + Open path from history browser in opposite list
   * Issue #76 - Notify user when rename fails
   * Issue #78 - Fixed exception when sort is set for extension column
   * Fixed problem with loading secondary accelerator
@@ -641,7 +641,7 @@ Version 0.1a-27
   + Tab close buttons
   + Display sizes in more friendly format
   + Ability to unmount items
-  * Optional command line paramters
+  * Optional command line parameters
   * Optional plugin status bars
   * Set WM_CLASS to fix issues with global menu
   - Unused indicator entries and dependencies
@@ -680,7 +680,7 @@ Version 0.1a-24
   * Clear selection on source list after operation has started
   * Modified startup method to be even more robust
   * Fixed regression bug with bookmarks menu
-  * Increas plugin border width to fix issues on some themes (eg. Equinox)
+  * Increase plugin border width to fix issues on some themes (eg. Equinox)
   * Fixed language template so Poedit can use it
 
 Version 0.1a-23
@@ -746,7 +746,7 @@ Version 0.1a-19
   * Use of xdg-open instead of gnome-open
   * Open with list didn't show all associated programs
   * Fixed popup menu behavior
-  * Fixed bug #28: Focus oposite notebook with hidden tabs
+  * Fixed bug #28: Focus opposite notebook with hidden tabs
   * Update fullscreen menu image properly
   * Proper directory statistics update on item removal
 
@@ -877,7 +877,7 @@ Version 0.1a-7
   + Reload list icons on theme change
   + Saving window size and position
   + Free/total space display
-  + Added setting/getting path from oposite list (CTRL+Left CTRL+Right)
+  + Added setting/getting path from opposite list (CTRL+Left CTRL+Right)
   + Pressing Up (or Escape) in command edit will focus last used list
   * Changed status bar type to fit system theme natively
   * Fixed handling of `cd` command
--- sunflower-0.5.63.orig/README.md
+++ sunflower-0.5.63/README.md
@@ -1,4 +1,4 @@
-Note: Prefered repository hosting is [GitLab](https://gitlab.com/MeanEYE/Sunflower). If you don't have an account there and don't wish to make one interacting with one on GitHub is fine.
+Note: Preferred repository hosting is [GitLab](https://gitlab.com/MeanEYE/Sunflower). If you don't have an account there and don't wish to make one interacting with one on GitHub is fine.
 
 Sunflower
 =========
--- sunflower-0.5.63.orig/setup.py
+++ sunflower-0.5.63/setup.py
@@ -3,6 +3,12 @@
 from setuptools import setup, find_packages
 from pathlib import Path
 
+def molist():
+    trdir = "translations/"
+    langs = [x.name for x in Path(trdir).iterdir() if x.is_dir()]
+    molist = [ (f'share/locale/{l}/LC_MESSAGES/', [f"translations/{l}/LC_MESSAGES/sunflower.mo"]) for l in langs]
+    return molist
+
 def get_version():
 	"""Get software version from the main window."""
 	import gi
@@ -28,9 +34,9 @@ setup (
 		include_package_data=True,
 		data_files=[
 			('share/sunflower/images/', list(str(i) for i in Path('images/').rglob('*') if i.is_file())),
-			('share/sunflower/translations', list(str(i) for i in Path('translations/').rglob('*.po') if i.is_file())),
 			('share/sunflower/styles', ['styles/main.css']),
-			('share/applications', ['Sunflower.desktop'])
+			('share/applications', ['Sunflower.desktop']),
+            *molist()
 			],
 		entry_points={'console_scripts': ['sunflower = sunflower.__main__:main']}
-		)
+	)
--- sunflower-0.5.63.orig/sunflower/__main__.py
+++ sunflower-0.5.63/sunflower/__main__.py
@@ -171,7 +171,7 @@ class Sunflower(Gtk.Application):
 		self.window.create_tabs(self.arguments)
 
 	def do_command_line(self, command_line):
-		"""Handle command line argumens and flags."""
+		"""Handle command line arguments and flags."""
 		Gtk.Application.do_command_line(self, command_line)
 
 		def absolute_path(cwd, path):
--- sunflower-0.5.63.orig/sunflower/clipboard.py
+++ sunflower-0.5.63/sunflower/clipboard.py
@@ -7,7 +7,7 @@ from sunflower.common import executable_
 
 
 class Clipboard:
-	"""Support for various clipboard implementations accross different platforms
+	"""Support for various clipboard implementations across different platforms
 	and different protocols."""
 
 	def __init__(self):
--- sunflower-0.5.63.orig/sunflower/config.py
+++ sunflower-0.5.63/sunflower/config.py
@@ -42,7 +42,7 @@ class Config(Container):
 	"""This class provides easy way to create and edit configuration files
 	located in project's configuration directory.
 
-	It is recomended that this class is used for all purposes of storing
+	It is recommended that this class is used for all purposes of storing
 	data used by program itself and	plugins!
 
 	"""
@@ -114,7 +114,7 @@ class Config(Container):
 					self._values[name] = values
 
 	def add_section(self, name, section):
-		"""Add new section to configutation"""
+		"""Add new section to configuration"""
 		self._sections[name] = section
 
 	def create_section(self, name):
@@ -139,5 +139,5 @@ class Config(Container):
 		return self._sections[name]
 
 	def has_section(self, name):
-		"""Check for existance of section"""
+		"""Check for existence of section"""
 		return name in self._sections
--- sunflower-0.5.63.orig/sunflower/gui/input_dialog.py
+++ sunflower-0.5.63/sunflower/gui/input_dialog.py
@@ -1379,7 +1379,7 @@ class AddBookmarkDialog:
 	def get_response(self):
 		"""Return value and self-destruct
 
-		This method returns tupple with response code and
+		This method returns tuple with response code and
 		input text.
 
 		"""
@@ -1394,7 +1394,7 @@ class AddBookmarkDialog:
 
 
 class OperationError:
-	"""Dialog used to ask user about error occured during certain operation."""
+	"""Dialog used to ask user about error occurred during certain operation."""
 	RESPONSE_CANCEL = 0
 	RESPONSE_RETRY = 1
 	RESPONSE_SKIP = 2
@@ -1482,7 +1482,7 @@ class OperationError:
 
 
 class CreateToolbarWidgetDialog:
-	"""Create widget persisten dialog."""
+	"""Create widget persistent dialog."""
 
 	def __init__(self, application):
 		self._dialog = Gtk.Dialog(parent=application, use_header_bar=True)
@@ -1501,7 +1501,7 @@ class CreateToolbarWidgetDialog:
 		vbox = Gtk.VBox(False, 5)
 		vbox.set_border_width(5)
 
-		# create interfacce
+		# create interface
 		vbox_name = Gtk.VBox(False, 0)
 
 		label_name = Gtk.Label(label=_('Name:'))
@@ -1616,7 +1616,7 @@ class InputRangeDialog(InputDialog):
 
 
 class ApplicationInputDialog(InputDialog):
-	"""Input dialog for associations manager. Offers two fiels
+	"""Input dialog for associations manager. Offers two fields
 	for entry: application name and command."""
 
 	def __init__(self, application):
--- sunflower-0.5.63.orig/sunflower/gui/main_window.py
+++ sunflower-0.5.63/sunflower/gui/main_window.py
@@ -530,7 +530,7 @@ class MainWindow(Gtk.ApplicationWindow):
 		# TODO: Make sure all threads are stopped at this point.
 
 	def _quit(self, widget=None, data=None):
-		"""Trigger destory action from Quit menu item"""
+		"""Trigger destroy action from Quit menu item"""
 		if not self.emit('delete-event', Gdk.Event.new(Gdk.EventType.DELETE)):
 			self.destroy()
 
@@ -671,7 +671,7 @@ class MainWindow(Gtk.ApplicationWindow):
 		self._window_state = event.new_window_state
 
 	def _page_added(self, notebook, child, page_num):
-		"""Handle adding/moving tab accross notebooks"""
+		"""Handle adding/moving tab across notebooks"""
 		if hasattr(child, 'update_notebook'):
 			child.update_notebook(notebook)
 
@@ -1154,7 +1154,7 @@ class MainWindow(Gtk.ApplicationWindow):
 		self._accel_group.deactivate()
 
 	def _command_edit_lost_focus(self, widget, event):
-		"""Handle command entry loosing focus"""
+		"""Handle command entry losing focus"""
 		self._accel_group.activate(self)
 
 	def _save_window_position(self):
@@ -1749,7 +1749,7 @@ class MainWindow(Gtk.ApplicationWindow):
 		group.add_method('deselect_with_same_extension', _('Deselect with same exte_nsion'), self.deselect_with_same_extension)
 		group.add_method('compare_directories', _('Compare _directories'), self.compare_directories)
 		group.add_method('find_files', _('_Find files'), self.show_find_files)
-		group.add_method('advanced_rename', _('_Find files'), self.show_advanced_rename)
+		group.add_method('advanced_rename', _('Advanced Rename'), self.show_advanced_rename)
 		# group.add_method('mount_manager', _('_Mount manager'), self.mount_manager.show)
 		# group.add_method('keyring_manager', _('_Keyring manager'), self.keyring_manager.show)
 		group.add_method('reload', _('Rel_oad item list'), self._command_reload)
--- sunflower-0.5.63.orig/sunflower/gui/operation_dialog.py
+++ sunflower-0.5.63/sunflower/gui/operation_dialog.py
@@ -257,11 +257,11 @@ class OperationDialog:
 	def _update_total_size(self):
 		"""Update progress bar and labels for total size"""
 		# update label
-		formated_size = self._size_format.format(
+		formatted_size = self._size_format.format(
 				common.format_size(self._current_size, self._size_format_type),
 				common.format_size(self._total_size, self._size_format_type)
 				)
-		self._value_total_size.set_label(formated_size)
+		self._value_total_size.set_label(formatted_size)
 
 		if self._total_size > 0:
 			self.set_total_size_fraction(float(self._current_size) / self._total_size)
--- sunflower-0.5.63.orig/sunflower/gui/preferences/bookmarks.py
+++ sunflower-0.5.63/sunflower/gui/preferences/bookmarks.py
@@ -158,7 +158,7 @@ class BookmarksOptions(SettingsPage):
 		self._checkbox_add_home.set_active(options.get('add_home'))
 		self._checkbox_system_bookmarks.set_active(options.get('system_bookmarks'))
 
-		# load and parse bookmars
+		# load and parse bookmarks
 		self._bookmarks.clear()
 
 		bookmarks = options.get('bookmarks')
--- sunflower-0.5.63.orig/sunflower/gui/preferences/toolbar.py
+++ sunflower-0.5.63/sunflower/gui/preferences/toolbar.py
@@ -40,7 +40,7 @@ class ToolbarOptions(SettingsPage):
 		col_name.set_min_width(200)
 		col_name.set_resizable(True)
 
-		# pack and configure renderes
+		# pack and configure renderer's
 		col_name.pack_start(cell_icon, False)
 		col_name.pack_start(cell_name, True)
 		col_name.add_attribute(cell_icon, 'icon-name', Column.ICON)
--- sunflower-0.5.63.orig/sunflower/gui/preferences/view_and_edit.py
+++ sunflower-0.5.63/sunflower/gui/preferences/view_and_edit.py
@@ -100,7 +100,7 @@ class ViewEditOptions(SettingsPage):
 					application.command_line
 				))
 
-		# make selected aplication active
+		# make selected application active
 		if selected_index is not None:
 			self._combobox_application.set_active(selected_index)
 
--- sunflower-0.5.63.orig/sunflower/gui/properties_window.py
+++ sunflower-0.5.63/sunflower/gui/properties_window.py
@@ -197,7 +197,7 @@ class PropertiesWindow(Gtk.Window):
 		"""Update widgets to represent item state"""
 		associations_manager = self._application.associations_manager
 
-		# get the rest of the infromation
+		# get the rest of the information
 		description = associations_manager.get_mime_description(self._mime_type)
 		time_format = self._application.options.section('item_list').get('time_format')
 		size_format = self._application.options.get('size_format')
@@ -582,7 +582,7 @@ class PropertiesWindow(Gtk.Window):
 		table_ownership.attach(label, 0, 1, 1, 2)
 
 		# create owner combobox
-		self._list_owner = Gtk.ListStore(str, int)
+		self._list_owner = Gtk.ListStore(str, GObject.TYPE_INT64)
 		cell_owner = Gtk.CellRendererText()
 
 		self._combobox_owner = Gtk.ComboBox.new_with_model(self._list_owner)
@@ -593,7 +593,7 @@ class PropertiesWindow(Gtk.Window):
 		table_ownership.attach(self._combobox_owner, 1, 2, 0, 1)
 
 		# create group combobox
-		self._list_group = Gtk.ListStore(str, int)
+		self._list_group = Gtk.ListStore(str, GObject.TYPE_INT64)
 		cell_group = Gtk.CellRendererText()
 
 		self._combobox_group = Gtk.ComboBox.new_with_model(self._list_group)
--- sunflower-0.5.63.orig/sunflower/indicator.py
+++ sunflower-0.5.63/sunflower/indicator.py
@@ -6,7 +6,7 @@ from gi.repository import Gtk
 
 
 class Indicator(object):
-	"""This class provides access to application indicators in Gnome envirnoments"""
+	"""This class provides access to application indicators in Gnome environments"""
 
 	def __init__(self, parent):
 		self._parent = parent
--- sunflower-0.5.63.orig/sunflower/operation.py
+++ sunflower-0.5.63/sunflower/operation.py
@@ -686,7 +686,7 @@ class CopyOperation(Operation):
 
 			if self._source.is_dir(item, relative_to=source_path):
 				# item is directory
-				can_procede = True
+				can_proceed = True
 				can_create = True
 
 				# check if directory exists on destination
@@ -694,12 +694,12 @@ class CopyOperation(Operation):
 					can_create = False
 
 					if self._merge_all is not None:
-						can_procede = self._merge_all
+						can_proceed = self._merge_all
 					else:
-						can_procede = self._get_merge_input(item)
+						can_proceed = self._get_merge_input(item)
 
 				# if user didn't skip directory, scan and update lists
-				if can_procede:
+				if can_proceed:
 					self._dir_list.append((item, relative_path))
 					if can_create: self._dir_list_create.append((item, relative_path))
 					self._scan_directory(item, relative_path)
@@ -840,18 +840,18 @@ class CopyOperation(Operation):
 
 			# item is a directory, scan it
 			if self._source.is_dir(full_name, relative_to=source_path):
-				can_procede = True
+				can_proceed = True
 				can_create = True
 
 				if self._destination.exists(full_name, relative_to=self._destination_path):
 					can_create = False
 
 					if self._merge_all is not None:
-						can_procede = self._merge_all
+						can_proceed = self._merge_all
 					else:
-						can_procede = self._get_merge_input(full_name)
+						can_proceed = self._get_merge_input(full_name)
 
-				if can_procede:
+				if can_proceed:
 					# allow processing specified directory
 					self._dir_list.append((full_name, source_path))
 					if can_create: self._dir_list_create.append((full_name, source_path))
@@ -915,7 +915,7 @@ class CopyOperation(Operation):
 
 	def _copy_file(self, file_name, relative_path=None):
 		"""Copy file content"""
-		can_procede = True
+		can_proceed = True
 		source_path = self._source_path if relative_path is None else os.path.join(self._source_path, relative_path)
 		dest_file = file_name
 		sh = None
@@ -924,10 +924,10 @@ class CopyOperation(Operation):
 		# check if destination file exists
 		if self._destination.exists(file_name, relative_to=self._destination_path):
 			if self._overwrite_all is not None:
-				can_procede = self._overwrite_all
+				can_proceed = self._overwrite_all
 
 			else:
-				can_procede, options = self._get_overwrite_input(file_name)
+				can_proceed, options = self._get_overwrite_input(file_name)
 
 				# get new name if user specified
 				if options[OverwriteOption.RENAME]:
@@ -937,10 +937,10 @@ class CopyOperation(Operation):
 					                )
 
 				elif source_path == self._destination_path:
-					can_procede = False
+					can_proceed = False
 
 		# if user skipped this file return
-		if not can_procede:
+		if not can_proceed:
 			self._file_list.pop(self._file_list.index((file_name, relative_path)))
 
 			# update total size
@@ -1071,7 +1071,7 @@ class CopyOperation(Operation):
 
 	def _create_link(self, link_name, relative_path=None):
 		"""Create specified link"""
-		can_procede = True
+		can_proceed = True
 		source_path = self._source_path if relative_path is None else os.path.join(self._source_path, relative_path)
 		file_stat = self._source.get_stat(link_name, relative_to=source_path)
 		target = self._source.readlink(link_name, relative_to=source_path)
@@ -1079,21 +1079,21 @@ class CopyOperation(Operation):
 		try:
 			if self._destination.exists(link_name, relative_to=self._destination_path):
 				if self._overwrite_all is not None:
-					can_procede = self._overwrite_all
+					can_proceed = self._overwrite_all
 				else:
-					can_procede, options = self._get_overwrite_input(link_name)
+					can_proceed, options = self._get_overwrite_input(link_name)
 
 					# get new name if user specified
 					if options[OverwriteOption.RENAME]:
 						link_name = options[OverwriteOption.NEW_NAME]
 					elif source_path == self._destination_path:
-						can_procede = False
+						can_proceed = False
 					else:
 						self._source.remove_path(link_name, relative_to=self._destination_path)
 
 
 			# if user skipped this file return
-			if not can_procede:
+			if not can_proceed:
 				self._link_list.pop(self._file_list.index(link_name))
 				return
 
@@ -1274,16 +1274,16 @@ class MoveOperation(CopyOperation):
 
 	def _move_file(self, file_name, relative_path=None):
 		"""Move specified file using provider rename method"""
-		can_procede = True
+		can_proceed = True
 		source_path = self._source_path if relative_path is None else os.path.join(self._source_path, relative_path)
 		dest_file = file_name
 
 		# check if destination file exists
 		if self._destination.exists(file_name, relative_to=self._destination_path):
 			if self._overwrite_all is not None:
-				can_procede = self._overwrite_all
+				can_proceed = self._overwrite_all
 			else:
-				can_procede, options = self._get_overwrite_input(file_name)
+				can_proceed, options = self._get_overwrite_input(file_name)
 
 				# get new name if user specified
 				if options[OverwriteOption.RENAME]:
@@ -1293,7 +1293,7 @@ class MoveOperation(CopyOperation):
 					                )
 
 		# if user skipped this file return
-		if not can_procede:
+		if not can_proceed:
 			self._file_list.pop(self._file_list.index((file_name, relative_path)))
 			return
 
@@ -1656,12 +1656,12 @@ class RenameOperation(Operation):
 
 	def _rename_path(self, old_name, new_name, index):
 		"""Rename specified path"""
-		can_procede = True
+		can_proceed = True
 
 		try:
 			# check if specified path already exists
 			if self._destination.exists(new_name, relative_to=self._source_path):
-				can_procede, options = self._get_overwrite_input(new_name)
+				can_proceed, options = self._get_overwrite_input(new_name)
 
 				# get new name if user specified
 				if options[OverwriteOption.RENAME]:
@@ -1670,7 +1670,7 @@ class RenameOperation(Operation):
 					                    options[OverwriteOption.NEW_NAME]
 					                )
 
-			if not can_procede:
+			if not can_proceed:
 				# user canceled overwrite, skip the file
 				self._file_list.pop(index)
 				return
--- sunflower-0.5.63.orig/sunflower/plugin_base/column_extension.py
+++ sunflower-0.5.63/sunflower/plugin_base/column_extension.py
@@ -2,7 +2,7 @@ class ColumnExtension:
 	"""Class used for extending item lists.
 
 	Object of this class is created for every tab individually
-	and for this reason class parameters are higly discouraged
+	and for this reason class parameters are highly discouraged
 	unless you know what you are doing.
 
 	"""
--- sunflower-0.5.63.orig/sunflower/plugin_base/item_list.py
+++ sunflower-0.5.63/sunflower/plugin_base/item_list.py
@@ -572,7 +572,7 @@ class ItemList(PluginBase):
 
 		if not result and key_value > 0 \
 		and event.keyval != Gdk.KEY_Escape:
-			# generate state sting based on modifier state (control, alt, shift)
+			# generate state string based on modifier state (control, alt, shift)
 			state = "%d%d%d" % (
 						bool(event.get_state() & Gdk.ModifierType.CONTROL_MASK),
 						bool(event.get_state() & Gdk.ModifierType.MOD1_MASK),
@@ -838,7 +838,7 @@ class ItemList(PluginBase):
 		return True
 
 	def _rename_file(self, widget=None, data=None):
-		"""Rename highlighed item"""
+		"""Rename highlighted item"""
 		return True
 
 	def _send_to(self, widget=None, data=None):
@@ -1106,7 +1106,7 @@ class ItemList(PluginBase):
 		return True
 
 	def _select_range(self, start_path, end_path):
-		"""Set items in range to status opposite from frist item in selection"""
+		"""Set items in range to status opposite from first item in selection"""
 		if self._parent.options.get('show_status_bar') == StatusVisible.WHEN_NEEDED:
 			selected_items = self._dirs['selected'] + self._files['selected']
 			(self._hide_status_bar, self._show_status_bar)[selected_items > 0]()
--- sunflower-0.5.63.orig/sunflower/plugin_base/monitor.py
+++ sunflower-0.5.63/sunflower/plugin_base/monitor.py
@@ -78,7 +78,7 @@ class Monitor(GObject.GObject):
 		for event in set(events):
 			self._emit_signal(*event)
 
-		# if paused break inteval cycle
+		# if paused break interval cycle
 		return not self._paused.isSet()
 
 	def _emit_signal(self, signal, path, other_path):
--- sunflower-0.5.63.orig/sunflower/plugin_base/toolbar_factory.py
+++ sunflower-0.5.63/sunflower/plugin_base/toolbar_factory.py
@@ -8,7 +8,7 @@ class ToolbarFactory:
 	def get_types(self):
 		"""Return dictionary of widget types this factory can create.
 
-		Result needs to be dictionary with widget type as key and touple
+		Result needs to be dictionary with widget type as key and tuple
 		containing icon name and description as value.
 		Type is used to provide factory with configuration for specified item
 		while description is user friendly representation of widget.
--- sunflower-0.5.63.orig/sunflower/plugin_base/viewer_extension.py
+++ sunflower-0.5.63/sunflower/plugin_base/viewer_extension.py
@@ -9,7 +9,7 @@ class ViewerExtension:
 		pass
 
 	def get_container(self):
-		"""Return container widget to be embeded to notebook"""
+		"""Return container widget to be embedded to notebook"""
 		pass
 
 	def focus_object(self):
--- sunflower-0.5.63.orig/sunflower/plugins/file_list/file_list.py
+++ sunflower-0.5.63/sunflower/plugins/file_list/file_list.py
@@ -27,14 +27,14 @@ from sunflower.widgets.emblems_renderer
 
 class Column:
 	NAME = 0
-	FORMATED_NAME = 1
+	FORMATTED_NAME = 1
 	EXTENSION = 2
 	SIZE = 3
-	FORMATED_SIZE = 4
+	FORMATTED_SIZE = 4
 	MODE = 5
-	FORMATED_MODE = 6
+	FORMATTED_MODE = 6
 	TIME = 7
-	FORMATED_TIME = 8
+	FORMATTED_TIME = 8
 	IS_DIR = 9
 	IS_PARENT_DIR = 10
 	IS_LINK = 11
@@ -81,22 +81,22 @@ class FileList(ItemList):
 								# name is a string, but it can contain surrogates,
 								# so it can't be marshalled as a gstring.
 								GObject.TYPE_PYOBJECT,	# Column.NAME
-								str,	# Column.FORMATED_NAME
+								str,	# Column.FORMATTED_NAME
 								str,	# Column.EXTENSION
 								float,	# Column.SIZE
-								str,	# Column.FORMATED_SIZE
+								str,	# Column.FORMATTED_SIZE
 								int,	# Column.MODE
-								str,	# Column.FORMATED_MODE
+								str,	# Column.FORMATTED_MODE
 								int,	# Column.DATE
-								str,	# Column.FORMATED_DATE
+								str,	# Column.FORMATTED_DATE
 								bool,	# Column.IS_DIR
 								bool,	# Column.IS_PARENT_DIR
 								bool,	# Column.IS_LINK
 								str,	# Column.COLOR
 								str,	# Column.ICON
 								bool,	# Column.SELECTED
-								int,	# Column.USER_ID
-								int,	# Column.GROUP_ID
+								GObject.TYPE_INT64,	# Column.USER_ID
+								GObject.TYPE_INT64,	# Column.GROUP_ID
 								GObject.TYPE_PYOBJECT,	# Column.EMBLEMS
 								str		# Column.SORT_DATA
 							)
@@ -165,11 +165,11 @@ class FileList(ItemList):
 		col_name.add_attribute(cell_icon, 'icon-name', Column.ICON)
 		col_name.add_attribute(cell_emblems, 'emblems', Column.EMBLEMS)
 		col_name.add_attribute(cell_emblems, 'is-link', Column.IS_LINK)
-		col_name.add_attribute(cell_name, 'text', Column.FORMATED_NAME)
+		col_name.add_attribute(cell_name, 'text', Column.FORMATTED_NAME)
 		col_extension.add_attribute(cell_extension, 'text', Column.EXTENSION)
-		col_size.add_attribute(cell_size, 'text', Column.FORMATED_SIZE)
-		col_mode.add_attribute(cell_mode, 'text', Column.FORMATED_MODE)
-		col_date.add_attribute(cell_date, 'text', Column.FORMATED_TIME)
+		col_size.add_attribute(cell_size, 'text', Column.FORMATTED_SIZE)
+		col_mode.add_attribute(cell_mode, 'text', Column.FORMATTED_MODE)
+		col_date.add_attribute(cell_date, 'text', Column.FORMATTED_TIME)
 
 		col_name.set_resizable(True)
 		col_name.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
@@ -358,7 +358,7 @@ class FileList(ItemList):
 			self._handle_cursor_change()
 
 	def _control_lost_focus(self, widget, data=None):
-		"""Handle control loosing focus"""
+		"""Handle control losing focus"""
 		ItemList._control_lost_focus(self, widget, data)
 
 		if self._enable_media_preview:
@@ -734,10 +734,10 @@ class FileList(ItemList):
 		result = False
 		if original_path is None:
 			provider = self._get_other_provider()
-			destintation = self._parent.get_opposite_object(self).path
+			destination = self._parent.get_opposite_object(self).path
 		else:
 			provider = self.get_provider()
-			destintation = self.path
+			destination = self.path
 
 		supported_options = provider.get_support()
 
@@ -770,7 +770,7 @@ class FileList(ItemList):
 					provider.link(
 							original_path,
 							link_name,
-							relative_to=destintation,
+							relative_to=destination,
 							symbolic=not hard_link
 						)
 
@@ -1572,8 +1572,8 @@ class FileList(ItemList):
 		# add item to the list
 		try:
 			# don't allow extension splitting on directories
-			formated_file_mode = common.format_mode(file_mode, self._mode_format)
-			formated_file_date = time.strftime(self._time_format, time.localtime(file_date))
+			formatted_file_mode = common.format_mode(file_mode, self._mode_format)
+			formatted_file_date = time.strftime(self._time_format, time.localtime(file_date))
 
 			if not is_dir:
 				if not self._second_extension:
@@ -1588,23 +1588,23 @@ class FileList(ItemList):
 				if self._show_full_name:
 					file_info = (filename, file_info[1])
 
-				formated_file_size = common.format_size(file_size, self._size_format, False)
+				formatted_file_size = common.format_size(file_size, self._size_format, False)
 
 			else:
 				# item is a directory
 				file_info = (filename, '')
-				formated_file_size = '<DIR>'
+				formatted_file_size = '<DIR>'
 
 			data = (
 					os.path.join(parent_path, filename) if parent_path else filename,
 					common.decode_file_name(file_info[0]),
 					common.decode_file_name(file_info[1][1:]),
 					file_size,
-					formated_file_size,
+					formatted_file_size,
 					file_mode,
-					formated_file_mode,
+					formatted_file_mode,
 					file_date,
-					formated_file_date,
+					formatted_file_date,
 					is_dir,
 					False,
 					is_link,
@@ -1707,22 +1707,22 @@ class FileList(ItemList):
 
 			if not is_dir:
 				# format file size
-				formated_file_size = common.format_size(file_size, self._size_format, False)
+				formatted_file_size = common.format_size(file_size, self._size_format, False)
 
 			else:
 				# item is a directory
-				formated_file_size = '<DIR>'
+				formatted_file_size = '<DIR>'
 
-			formated_file_mode = common.format_mode(file_mode, self._mode_format)
-			formated_file_date = time.strftime(self._time_format, time.localtime(file_date))
+			formatted_file_mode = common.format_mode(file_mode, self._mode_format)
+			formatted_file_date = time.strftime(self._time_format, time.localtime(file_date))
 
 			# update list store
 			self._store.set_value(found_iter, Column.SIZE, file_size)
 			self._store.set_value(found_iter, Column.MODE, file_mode)
 			self._store.set_value(found_iter, Column.TIME, file_date)
-			self._store.set_value(found_iter, Column.FORMATED_SIZE, formated_file_size)
-			self._store.set_value(found_iter, Column.FORMATED_MODE, formated_file_mode)
-			self._store.set_value(found_iter, Column.FORMATED_TIME, formated_file_date)
+			self._store.set_value(found_iter, Column.FORMATTED_SIZE, formatted_file_size)
+			self._store.set_value(found_iter, Column.FORMATTED_MODE, formatted_file_mode)
+			self._store.set_value(found_iter, Column.FORMATTED_TIME, formatted_file_date)
 
 			# regenerate sort data
 			self._generate_sort_data(iters=[found_iter,])
@@ -1739,14 +1739,14 @@ class FileList(ItemList):
 
 			file_mode = file_stat.mode
 			file_date = file_stat.time_modify
-			formated_file_mode = common.format_mode(file_mode, self._mode_format)
-			formated_file_date = time.strftime(self._time_format, time.localtime(file_date))
+			formatted_file_mode = common.format_mode(file_mode, self._mode_format)
+			formatted_file_date = time.strftime(self._time_format, time.localtime(file_date))
 
 			# update list store
 			self._store.set_value(found_iter, Column.MODE, file_mode)
 			self._store.set_value(found_iter, Column.TIME, file_date)
-			self._store.set_value(found_iter, Column.FORMATED_MODE, formated_file_mode)
-			self._store.set_value(found_iter, Column.FORMATED_TIME, formated_file_date)
+			self._store.set_value(found_iter, Column.FORMATTED_MODE, formatted_file_mode)
+			self._store.set_value(found_iter, Column.FORMATTED_TIME, formatted_file_date)
 
 			# regenerate sort data
 			self._generate_sort_data(iters=[found_iter,])
@@ -2101,10 +2101,10 @@ class FileList(ItemList):
 		name = self._store.get_value(found_iter, Column.NAME)
 		absolute_path = os.path.join(self.path, name)
 		total_count, total_size = self._parent.disk_usage.get(self, absolute_path)
-		formated_size = common.format_size(total_size, self._size_format, False)
+		formatted_size = common.format_size(total_size, self._size_format, False)
 
 		# update list
-		self._store.set_value(found_iter, Column.FORMATED_SIZE, formated_size)
+		self._store.set_value(found_iter, Column.FORMATTED_SIZE, formatted_size)
 
 	def change_path(self, path=None, selected=None):
 		"""Change file list path."""
--- sunflower-0.5.63.orig/sunflower/plugins/gvim_viewer/plugin.py
+++ sunflower-0.5.63/sunflower/plugins/gvim_viewer/plugin.py
@@ -52,7 +52,7 @@ class GVimViewer(ViewerExtension):
 		return _('GVim')
 
 	def get_container(self):
-		"""Return container widget to be embeded to notebook"""
+		"""Return container widget to be embedded to notebook"""
 		return self._container
 
 	def focus_object(self):
