Commit ca56e8fb authored by karol@jagiello.it's avatar karol@jagiello.it
Browse files

bump to v1.1

parent 82a351c5
TOP PRIORITY:
Add a shortcut to open tree tabs sidebar
undo close to restore trees (will work ONLY in firefox)
Loading data using message
Close tab on Middle mouse click and not On Middle mouse down
Split Pin size in theme
add textbox for ungrouped name in options
LOW PRIORITY:
option for scrollbar on the left
folders
unread state?
menu: collapse entire tree
menu: expand tree
menu: copy urls of the selected tabs
menu: bookmark selected tabs/tree
menu: select all
menu: invert selection
options: Customising the context menu
click on active to return to previous tab
sort tabs/tree
maybe filter tabs on search
make tabs border width configurable, including size 0
make tab spacing confiogurable, including 0 size
\ No newline at end of file
{"ToolbarShow":true,"ColorsSet":{"scrollbar_thumb":"#666666","scrollbar_thumb_hover":"#999999","scrollbar_track":"#474747","toolbar_background":"#474747","toolbar_border_bottom":"#666666","button_border":"#474747","button_background":"#474747","button_hover_border":"#666666","button_hover_background":"#666666","button_icons":"#dddddd","filter_box_background":"#fafafa","filter_box_border":"#fafafa","filter_box_font":"#333333","filter_clear_icon":"#808080","pin_list_border_bottom":"#666666","pin_list_background":"#474747","tab_list_background":"#474747","tab_background":"#474747","tab_border":"#474747","tab_hover_background":"#666666","tab_hover_border":"#666666","tab_selected_background":"#666666","tab_selected_border":"#666666","tab_selected_hover_border":"#888888","tab_selected_hover_background":"#888888","tab_filtered":"#9a9500","tab_filtered_highlighted":"#ae7100","tab_filtered_selected":"#0f8079","tab_filtered_selected_active":"#1299a9","tab_title":"#eeeeee","tab_title_active":"#fefefe","tab_title_discarded":"#bbbbbb","drag_indicator":"#7090c8","close_x":"#eeeeee","close_hover_x":"#fefefe","close_hover_border":"#474747","close_hover_background":"#474747","expand_open_border":"#cccccc","expand_open_background":"#cccccc","expand_closed_border":"#999999","expand_closed_background":"#999999","expand_lines":"#cccccc","tabs_menu_font":"#333333","tabs_menu_background":"#fafafa","tabs_menu_border":"#bebebe","tabs_menu_hover_background":"#efefef","tabs_menu_hover_border":"#bebebe","tabs_menu_separator":"#efefef"},"TabsSizeSetNumber":4,"TabsSizeSet":{"pin_width":"30px","pin_height":"28px","tab_height":"23px","tab_height_line":"27px","expand_box_size":"5px","expand_box_top":"8px","expand_box_left":"3px","expand_line_h_top":"11px","expand_line_h_width":"12px","expand_line_h_oc_width":"3px","expand_line_v_top":"-11px","expand_line_v_left":"0px","expand_line_v_last_height":"23px","title_padding_with_close":"24px","title_font_size":"12.5px","title_padding_left":"25px","drag_area_top":"9px","drag_area_bottom":"6px","close_top":"4px","close_right":"4px","close_size":"14px","favicon_size":"16px 16px","favicon_pos":"4px center"},"ScrollbarPinList":"4","ScrollbarTabList":"10","theme_name":"dark by cvvar00","theme_version":1,"toolbar":"\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_main\">\n\t\t\t\t\t\t<div class=\"button\" id=\"button_new\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_pin\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_undo\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_search\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_tools\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_search\">\n\t\t\t\t\t\t<div id=\"toolbar_search_input_box\">\n\t\t\t\t\t\t\t<input id=\"filter_box\" type=\"text\" placeholder=\"Search tabs...\">\n\t\t\t\t\t\t\t<div id=\"button_filter_clear\" style=\"opacity:0;\" type=\"reset\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id=\"toolbar_search_buttons\">\n\t\t\t\t\t\t\t<div class=\"button\" id=\"button_filter_type\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_prev\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_next\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_tools\">\n\t\t\t\t\t\t<div class=\"button\" id=\"button_options\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_bookmarks\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_downloads\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_history\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_settings\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_extensions\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_discard\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_move\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id=\"toolbar_separator\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_unused_buttons\">\n\t\t\t\t\t</div>\t\t\t\t\n\t\t\t\t"}
\ No newline at end of file
{"ToolbarShow":true,"ColorsSet":{"scrollbar_thumb":"#484848","scrollbar_thumb_hover":"#323232","scrollbar_track":"#3c3c3c","toolbar_background":"#484848","toolbar_border_bottom":"#323232","button_border":"#484848","button_background":"#484848","button_hover_border":"#323232","button_hover_background":"#323232","button_icons":"#adadad","filter_box_background":"#3c3c3c","filter_box_border":"#323232","filter_box_font":"#adadad","filter_clear_icon":"#adadad","pin_list_border_bottom":"#323232","pin_list_background":"#3c3c3c","tab_list_background":"#3c3c3c","tab_background":"#484848","tab_border":"#484848","tab_hover_background":"#323232","tab_hover_border":"#323232","tab_selected_background":"#707070","tab_selected_border":"#707070","tab_selected_hover_border":"#818181","tab_selected_hover_background":"#818181","tab_filtered":"#827e00","tab_filtered_highlighted":"#b37400","tab_filtered_selected":"#0f8079","tab_filtered_selected_active":"#1299a9","active_font_weight":"normal","tab_title":"#adadad","tab_title_active":"#cacaca","tab_title_discarded":"#7e7e7e","drag_indicator":"#c4c4c4","close_x":"#c4c4c4","close_hover_x":"#fbfcfe","close_hover_border":"#757676","close_hover_background":"#939394","expand_open_border":"#339bf3","expand_open_background":"#339bf3","expand_closed_border":"#818181","expand_closed_background":"#818181","expand_lines":"#9d9d9d","tabs_menu_font":"#333333","tabs_menu_background":"#fafafa","tabs_menu_border":"#bebebe","tabs_menu_hover_background":"#efefef","tabs_menu_hover_border":"#bebebe","tabs_menu_separator":"#efefef"},"TabsSizeSetNumber":2,"TabsSizeSet":{"pin_width":"26px","pin_height":"24px","tab_height":"19px","tab_height_line":"22px","expand_box_size":"5px","expand_box_top":"6px","expand_box_left":"3px","expand_line_h_top":"9px","expand_line_h_width":"12px","expand_line_h_oc_width":"3px","expand_line_v_top":"-9px","expand_line_v_left":"0px","expand_line_v_last_height":"19px","title_padding_with_close":"24px","title_font_size":"12px","title_padding_left":"25px","drag_area_top":"7px","drag_area_bottom":"5px","close_top":"2px","close_right":"2px","close_size":"13px","favicon_size":"16px 16px","favicon_pos":"4px center"},"ScrollbarPinList":"2","ScrollbarTabList":"16","theme_name":"dark by kroppy","theme_version":1,"toolbar":"\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_main\">\n\t\t\t\t\t\t<div class=\"button\" id=\"button_new\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_pin\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_undo\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_search\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_tools\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_search\">\n\t\t\t\t\t\t<div id=\"toolbar_search_input_box\">\n\t\t\t\t\t\t\t<input id=\"filter_box\" type=\"text\" placeholder=\"Search tabs...\">\n\t\t\t\t\t\t\t<div id=\"button_filter_clear\" style=\"opacity:0;\" type=\"reset\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id=\"toolbar_search_buttons\">\n\t\t\t\t\t\t\t<div class=\"button\" id=\"button_filter_type\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_prev\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_next\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_tools\">\n\t\t\t\t\t\t<div class=\"button\" id=\"button_options\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_bookmarks\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_downloads\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_history\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_settings\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_extensions\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_discard\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_move\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id=\"toolbar_separator\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_unused_buttons\">\n\t\t\t\t\t</div>\t\t\t\t\n\t\t\t\t"}
\ No newline at end of file
{"ToolbarShow":true,"ColorsSet":{"scrollbar_thumb":"#cdcdcd","scrollbar_thumb_hover":"#a6a6a6","scrollbar_track":"#e4e4e4","toolbar_background":"#4a4a4a","toolbar_border_bottom":"#2f2f2f","button_border":"#4c4c4c","button_background":"#4a4a4a","button_hover_border":"#383838","button_hover_background":"#383838","button_icons":"#d7d7d7","filter_box_background":"#333333","filter_box_border":"#2d2d2d","filter_box_font":"#e3e3e3","filter_clear_icon":"#808080","pin_list_border_bottom":"#2f2f2f","pin_list_background":"#3f3f3f","tab_list_background":"#3f3f3f","tab_background":"#4a4a4a","tab_border":"#4a4a4a","tab_hover_background":"#383838","tab_hover_border":"#383838","tab_selected_background":"#333333","tab_selected_border":"#3e3e3e","tab_selected_hover_border":"#2d2d2d","tab_selected_hover_background":"#2d2d2d","tab_filtered":"#785400","tab_filtered_highlighted":"#8e5c00","tab_filtered_selected":"#0f8079","tab_filtered_selected_active":"#1299a9","active_font_weight":"bold","tab_title":"#e3e3e3","tab_title_active":"#ffffff","tab_title_discarded":"#7e7e7e","drag_indicator":"#e3e3e3","close_x":"#7d7d7d","close_hover_x":"#fbfcfe","close_hover_border":"#757676","close_hover_background":"#939394","expand_open_border":"#8a8a8a","expand_open_background":"#d0e2f0","expand_closed_border":"#969696","expand_closed_background":"#eaeaea","expand_lines":"#cccccc","tabs_menu_font":"#e5e5e5","tabs_menu_background":"#414141","tabs_menu_border":"#252525","tabs_menu_hover_background":"#252525","tabs_menu_hover_border":"#252525","tabs_menu_separator":"#525252"},"TabsSizeSetNumber":4,"TabsSizeSet":{"pin_width":"30px","pin_height":"28px","tab_height":"23px","tab_height_line":"26px","expand_box_size":"5px","expand_box_top":"8px","expand_box_left":"3px","expand_line_h_top":"11px","expand_line_h_width":"12px","expand_line_h_oc_width":"3px","expand_line_v_top":"-11px","expand_line_v_left":"0px","expand_line_v_last_height":"23px","title_padding_with_close":"24px","title_font_size":"12.5px","title_padding_left":"25px","drag_area_top":"9px","drag_area_bottom":"6px","close_top":"4px","close_right":"4px","close_size":"14px","favicon_size":"16px 16px","favicon_pos":"4px center"},"ScrollbarPinList":4,"ScrollbarTabList":16,"theme_name":"kvaps_dark","theme_version":1,"toolbar":"\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_main\">\n\t\t\t\t\t\t<div class=\"button\" id=\"button_new\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_pin\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_undo\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_search\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_tools\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_search\">\n\t\t\t\t\t\t<div id=\"toolbar_search_input_box\">\n\t\t\t\t\t\t\t<input id=\"filter_box\" type=\"text\" placeholder=\"Search tabs...\">\n\t\t\t\t\t\t\t<div id=\"button_filter_clear\" style=\"opacity:0;\" type=\"reset\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id=\"toolbar_search_buttons\">\n\t\t\t\t\t\t\t<div class=\"button\" id=\"button_filter_type\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_prev\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_next\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_tools\">\n\t\t\t\t\t\t<div class=\"button\" id=\"button_options\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_bookmarks\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_downloads\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_history\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_settings\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_extensions\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_discard\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_move\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div id=\"toolbar_separator\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_unused_buttons\">\n\t\t\t\t\t</div>\t\t\t\t\n\t\t\t\t"}
\ No newline at end of file
{"ToolbarShow":true,"ColorsSet":{"toolbar_border_bottom":"#616161","attention_background":"#3364ac","tab_active_hover_title_font_weight":"bold","tab_title_font_weight":"normal","button_icons":"#9e9e9e","scrollbar_width":"12px","scrollbar_height":"11px","scrollbar_thumb":"#484848","scrollbar_thumb_hover":"#353535","scrollbar_track":"#3c3c3c","toolbar_background":"#484848","button_border":"#484848","button_background":"#484848","button_hover_border":"#323232","button_hover_background":"#323232","filter_box_background":"#3c3c3c","filter_box_border":"#616161","filter_box_font":"#adadad","filter_clear_icon":"#adadad","pin_list_border_bottom":"#616161","pin_list_background":"#3c3c3c","tab_list_background":"#404040","tab_background":"#484848","tab_border":"#484848","tab_hover_background":"#353535","tab_hover_border":"#353535","tab_selected_background":"#575757","tab_selected_border":"#575757","tab_selected_hover_border":"#353535","tab_selected_hover_background":"#353535","tab_filtered":"#827e00","tab_filtered_highlighted":"#b37400","tab_filtered_selected":"#0f8079","tab_filtered_selected_active":"#1299a9","active_font_weight":"normal","tab_title":"#adadad","tab_title_active":"#cacaca","tab_title_discarded":"#7e7e7e","drag_indicator":"#d1d1d1","close_x":"#c4c4c4","close_hover_x":"#fbfcfe","close_hover_border":"#757676","close_hover_background":"#939394","expand_open_border":"#339bf3","expand_open_background":"#339bf3","expand_closed_border":"#818181","expand_closed_background":"#818181","expand_lines":"#9d9d9d","tabs_menu_font":"#333333","tabs_menu_background":"#fafafa","tabs_menu_border":"#bebebe","tabs_menu_hover_background":"#efefef","tabs_menu_hover_border":"#bebebe","tabs_menu_separator":"#efefef","group_list_background":"#3c3c3c","group_list_borders":"#616161","group_list_button_hover_background":"#353535","tab_title_font_color":"#c1c1c1","tab_hover_title_font_color":"#c1c1c1","tab_selected_title_font_color":"#c1c1c1","tab_selected_hover_title_font_color":"#c7c7c7","tab_selected_discarded_background":"#535353","tab_selected_discarded_border":"#535353","tab_discarded_background":"#484848","tab_discarded_border":"#484848","tab_discarded_hover_background":"#353535","tab_discarded_hover_border":"#353535","tab_selected_discarded_hover_background":"#353535","tab_selected_discarded_hover_border":"#353535","button_icons_hover":"#9e9e9e","tab_title_font_style":"normal","tab_header_border_radius":"0px","tab_filtered_selected_active_highlighted_search_hover_border":"#c68100","tab_filtered_selected_active_highlighted_search_hover_background":"#c68100","tab_filtered_border":"#e8e000","tab_filtered_hover_border":"#d2cb00","tab_filtered_active_border":"#d2cb00","tab_filtered_active_hover_border":"#d2cb00","tab_hover_title_font_weight":"normal","tab_selected_title_font_weight":"normal","tab_selected_hover_title_font_weight":"normal","tab_active_title_font_weight":"bold","tab_active_background":"#969696","tab_active_title_font_color":"#ffffff","tab_active_hover_border":"#353535","tab_active_border":"#969696","tab_active_hover_background":"#353535","tab_active_hover_title_font_color":"#c1c1c1","tab_active_selected_background":"#787878","tab_active_selected_border":"#787878","tab_active_selected_title_font_color":"#c1c1c1","tab_selected_active_hover_background":"#353535","tab_selected_active_hover_border":"#353535","tab_selected_active_hover_title_font_color":"#c1c1c1","attention_border":"#3364ac","children_padding_left":"11px"},"TabsSizeSetNumber":2,"theme_name":"dark2 by kroppy","theme_version":2,"toolbar":"<div id=toolbar_main><div class=button id=button_new><div class=button_img></div></div><div class=button id=button_pin><div class=button_img></div></div><div class=button id=button_undo><div class=button_img></div></div><div class=button id=button_search><div class=button_img></div></div><div class=button id=button_tools><div class=button_img></div></div><div class=button id=button_groups><div class=button_img></div></div><div class=button id=button_backup><div class=button_img></div></div></div><div class=toolbar_shelf id=toolbar_search><div id=toolbar_search_input_box><input id=filter_box type=text placeholder=Search tabs...></input><div id=button_filter_clear style=\"opacity:0; position:absolute;\" type=reset></div></div><div id=toolbar_search_buttons><div class=button id=button_filter_type><div class=button_img></div></div><div class=button id=filter_search_go_prev><div class=button_img></div></div><div class=button id=filter_search_go_next><div class=button_img></div></div></div></div><div class=toolbar_shelf id=toolbar_shelf_tools><div class=button id=button_options><div class=button_img></div></div><div class=button id=button_move><div class=button_img></div></div></div><div class=toolbar_shelf id=toolbar_shelf_groups><div class=button id=button_groups_toolbar_hide><div class=button_img></div></div><div class=button id=button_new_group><div class=button_img></div></div><div class=button id=button_remove_group><div class=button_img></div></div><div class=button id=button_edit_group><div class=button_img></div></div><div class=button id=button_import_group><div class=button_img></div></div><div class=button id=button_export_group><div class=button_img></div></div></div><div class=toolbar_shelf id=toolbar_shelf_backup><div class=button id=button_import_bak><div class=button_img></div></div><div class=button id=button_import_merge_bak><div class=button_img></div></div><div class=button id=button_export_bak><div class=button_img></div></div></div>","unused_buttons":""}
\ No newline at end of file
{"ToolbarShow":true,"ColorsSet":{"scrollbar_thumb":"#c4c4c4","scrollbar_thumb_hover":"#787878","scrollbar_track":"#ffffff","toolbar_background":"#f6f6f6","toolbar_border_bottom":"#cccccc","button_border":"#f6f6f6","button_background":"#f6f6f6","button_hover_border":"#ecebee","button_hover_background":"#ecebee","button_icons":"#000000","filter_box_background":"#fafafa","filter_box_border":"#cccccc","filter_box_font":"#333333","filter_clear_icon":"#000000","pin_list_border_bottom":"#cccccc","pin_list_background":"#ffffff","tab_list_background":"#ffffff","tab_background":"#f6f6f6","tab_border":"#d2d2d2","tab_hover_background":"#d6d5d8","tab_hover_border":"#878787","tab_selected_background":"#c7f4e2","tab_selected_border":"#00caa7","tab_selected_hover_border":"#00caa7","tab_selected_hover_background":"#1de6b4","tab_filtered":"#ffa53b","tab_filtered_highlighted":"#ff8628","tab_filtered_selected":"#fff422","tab_filtered_selected_active":"#fff422","active_font_weight":"bold","tab_title":"#000000","tab_title_active":"#000000","tab_title_discarded":"#7e7e7e","drag_indicator":"#00caa7","close_x":"#3b3b3d","close_hover_x":"#000000","close_hover_border":"#939394","close_hover_background":"#b0adbd","expand_open_border":"#129071","expand_open_background":"#00caa7","expand_closed_border":"#969696","expand_closed_background":"#eaeaea","expand_lines":"#129071","tabs_menu_font":"#333333","tabs_menu_background":"#fafafa","tabs_menu_border":"#bebebe","tabs_menu_hover_background":"#efefef","tabs_menu_hover_border":"#bebebe","tabs_menu_separator":"#efefef"},"TabsSizeSetNumber":2,"TabsSizeSet":{"pin_width":"26px","pin_height":"24px","tab_height":"19px","tab_height_line":"22px","expand_box_size":"5px","expand_box_top":"6px","expand_box_left":"3px","expand_line_h_top":"9px","expand_line_h_width":"12px","expand_line_h_oc_width":"3px","expand_line_v_top":"-9px","expand_line_v_left":"0px","expand_line_v_last_height":"19px","title_padding_with_close":"24px","title_font_size":"12px","title_padding_left":"25px","drag_area_top":"7px","drag_area_bottom":"5px","close_top":"2px","close_right":"2px","close_size":"13px","favicon_size":"16px 16px","favicon_pos":"4px center"},"ScrollbarPinList":"4","ScrollbarTabList":"8","theme_name":"legacy by luetage","theme_version":1,"toolbar":"\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_main\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"button\" id=\"button_new\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_pin\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_undo\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t<div class=\"button\" id=\"button_search\"><div class=\"button_img\"></div></div><div class=\"button on\" id=\"button_tools\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int hidden\" id=\"toolbar_search\">\n\t\t\t\t\t\t<div id=\"toolbar_search_input_box\">\n\t\t\t\t\t\t\t<input id=\"filter_box\" type=\"text\" placeholder=\"Search tabs...\">\n\t\t\t\t\t\t\t<div id=\"button_filter_clear\" style=\"opacity:0;\" type=\"reset\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div id=\"toolbar_search_buttons\">\n\t\t\t\t\t\t\t<div class=\"button url\" id=\"button_filter_type\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_prev\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t\t<div class=\"button\" id=\"filter_search_go_next\"><div class=\"button_img\"></div></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_tools\">\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t<div class=\"button\" id=\"button_options\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_bookmarks\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_downloads\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_history\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_settings\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_extensions\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_discard\"><div class=\"button_img\"></div></div><div class=\"button\" id=\"button_move\" draggable=\"true\"><div class=\"button_img\"></div></div></div>\n\t\t\t\t\t<div id=\"toolbar_separator\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"toolbar_int\" id=\"toolbar_unused_buttons\">\n\t\t\t\t\t</div>\t\t\t\t\n\t\t\t\t"}
\ No newline at end of file
......@@ -5,6 +5,9 @@
"extDesc": {
"message": "Manage your tabs in the sidebar!"
},
"OpenSidebar": {
"message": "Open Tree Tabs"
},
"button_new": {
......@@ -189,7 +192,7 @@
"message": " Tabs "
},
"options_syncro_tabbar_tabs_order": {
"message": "synchronise TabBar tabs order with Tree Tabs (with too many tabs, after moving tabs, Tree Tabs may be unresponsive for a second)"
"message": "synchronise browser tabs order with Tree Tabs, tabs can be unresponsive for a second after drag&drop, but this option is needed for correct ctrl+tab switching"
},
"options_switch_with_scroll": {
"message": "switch tabs with mouse wheel"
......@@ -212,6 +215,11 @@
"options_promote_children": {
"message": "promote children tabs on close, if disabled, when closing the parent of a tree structure, all tabs will be closed (be careful, because undo close tab will not recover the trees structure)"
},
"options_promote_children_in_first_child": {
"message": "promote first child tab as a parent"
},
"options_skip_load": {
"message": "discard tree structure after browser's restart, this option is for those who don't use browser's session. Basically it disables loading database at startup."
},
......@@ -268,7 +276,13 @@
"message": "at the bottom"
},
"options_max_tree_drag_drop": {
"message": "Limit Drag&Drop to tree's maximum depth as well"
"message": "limit Drag&Drop to tree's maximum depth as well"
},
"options_show_counter_tabs": {
"message": "show children tabs count on tab's title"
},
"options_show_counter_tabs_hints": {
"message": "show children tabs count in tab's hint"
},
"options_max_tree_depth": {
......@@ -277,6 +291,21 @@
"options_groups": {
"message": "Groups"
},
"options_show_counter_groups": {
"message": "show tabs count on groups"
},
"options_groups_toolbar_default": {
"message": "show groups toolbar in new windows"
},
......@@ -554,7 +583,7 @@
"options_clear_data": {
"message": "Sidebar is not loading? Clear everything! ATTENTION! Tabs arrangement will be lost as well!"
"message": "Sidebar is not loading? Reset! ATTENTION! All options and saved Themes will be lost!"
},
......@@ -582,7 +611,7 @@
"caption_ungrouped_group": {
"message": "Ungrouped tabs"
"message": "Ungrouped"
},
"caption_noname_group": {
"message": "untitled"
......
......@@ -3,6 +3,7 @@
<head><meta charset="utf-8"/></head>
<body></body>
<script type="text/javascript" src="../scripts/global.js"></script>
<script type="text/javascript" src="../bg_v015_to_v1.js"></script>
<script type="text/javascript" src="../legacy.js"></script>
<script type="text/javascript" src="../bg_ch.js"></script>
<script type="text/javascript" src="../bg_ff.js"></script>
</html>
\ No newline at end of file
......@@ -2,27 +2,20 @@
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
if (localStorage.getItem("t0") !== null){
LoadV015(0);
} else {
if (browserId != "F") {
LoadPreferences();
ChromeLoadTabs(0);
ChromeMessageListeners();
}
function ChromeLoadTabs(retry) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
var refTabs = {};
var tabs_matched = 0;
// load tabs and windows from hdd
var w_count = LoadData("w_count", 0);
var t_count = LoadData("t_count", 0);
var LoadedWindows = LoadData("windows", []);
var LoadedTabs = LoadData("tabs", []);
// if loaded tabs mismatch by 50%, then try to load back
if (LoadedTabs.length < t_count*0.5 || retry > 0) {
LoadedTabs = LoadData("tabs_BAK"+retry, []);
......@@ -31,24 +24,22 @@ function ChromeLoadTabs(retry) {
if (LoadedWindows.length < w_count || retry > 0) {
LoadedWindows = LoadData("windows_BAK"+retry, []);
}
// CACHED COUNTS
var WinCount = w.length;
var LoadedWinCount = LoadedWindows.length;
var LoadedTabsCount = LoadedTabs.length;
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
if (w[wIndex].tabs[0].url != "chrome://videopopout/") { // this is for opera for their extra video popup, which is weirdly queried as a "normal" window
let winId = w[wIndex].id;
let url1 = w[wIndex].tabs[0].url;
let url2 = w[wIndex].tabs[w[wIndex].tabs.length-1].url;
windows[winId] = {group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
windows[winId] = {group_bar: opt.groups_toolbar_default, search_filter: "url", active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
for (var LwIndex = 0; LwIndex < LoadedWinCount; LwIndex++) {
if (LoadedWindows[LwIndex].url1 == url1 || LoadedWindows[LwIndex].url2 == url2) {
windows[winId].group_bar = LoadedWindows[LwIndex].group_bar;
windows[winId].active_shelf = LoadedWindows[LwIndex].active_shelf;
windows[winId].active_group = LoadedWindows[LwIndex].active_group;
if (LoadedWindows[LwIndex].group_bar) { windows[winId].group_bar = LoadedWindows[LwIndex].group_bar; }
if (LoadedWindows[LwIndex].search_filter) { windows[winId].search_filter = LoadedWindows[LwIndex].search_filter; }
if (LoadedWindows[LwIndex].active_shelf) { windows[winId].active_shelf = LoadedWindows[LwIndex].active_shelf; }
if (LoadedWindows[LwIndex].active_group) { windows[winId].active_group = LoadedWindows[LwIndex].active_group; }
if (Object.keys(LoadedWindows[LwIndex].groups).length > 0) { windows[winId].groups = Object.assign({}, LoadedWindows[LwIndex].groups); }
if (Object.keys(LoadedWindows[LwIndex].folders).length > 0) { windows[winId].folders = Object.assign({}, LoadedWindows[LwIndex].folders); }
LoadedWindows[LwIndex].url1 = "";
......@@ -58,14 +49,12 @@ function ChromeLoadTabs(retry) {
}
}
}
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
var TabsCount = w[wIndex].tabs.length;
for (var tabIndex = 0; tabIndex < TabsCount; tabIndex++) {
ChromeHashURL(w[wIndex].tabs[tabIndex]);
}
}
// compare saved tabs from storage to current session tabs, but can be skipped if set in options
if (opt.skip_load == false && LoadedTabs.length > 0) {
// match loaded tabs
......@@ -76,9 +65,9 @@ function ChromeLoadTabs(retry) {
let tabId = w[wIndex].tabs[tabIndex].id;
if (LoadedTabs[LtabIndex].hash == tabs[tabId].hash && refTabs[LoadedTabs[LtabIndex].id] == undefined) {
refTabs[LoadedTabs[LtabIndex].id] = tabId;
tabs[tabId].parent = LoadedTabs[LtabIndex].parent;
tabs[tabId].index = LoadedTabs[LtabIndex].index;
tabs[tabId].expand = LoadedTabs[LtabIndex].expand;
if (LoadedTabs[LtabIndex].parent) { tabs[tabId].parent = LoadedTabs[LtabIndex].parent; }
if (LoadedTabs[LtabIndex].index) { tabs[tabId].index = LoadedTabs[LtabIndex].index; }
if (LoadedTabs[LtabIndex].expand) { tabs[tabId].expand = LoadedTabs[LtabIndex].expand; }
LoadedTabs[LtabIndex].hash = undefined;
tabs_matched++;
break;
......@@ -86,7 +75,6 @@ function ChromeLoadTabs(retry) {
}
}
}
// replace parents tabIds for new ones, for that purpose refTabs was made before
for (var tabId in tabs) {
if (refTabs[tabs[tabId].parent] != undefined) {
......@@ -94,8 +82,6 @@ function ChromeLoadTabs(retry) {
}
}
}
// replace active tab ids for each group using refTabs
for (var windowId in windows) {
for (var group in windows[windowId].groups) {
......@@ -104,14 +90,10 @@ function ChromeLoadTabs(retry) {
}
}
}
// will try to find tabs for 3 times
if (opt.skip_load == true || retry > 2 || (tabs_matched > t_count*0.5)) {
schedule_save++;
hold = false;
running = true;
ChromeAutoSaveData("", 1000);
ChromeAutoSaveData("_BAK1", 300000);
ChromeAutoSaveData("_BAK2", 600000);
......@@ -122,14 +104,12 @@ function ChromeLoadTabs(retry) {
}
});
}
// You maybe are asking yourself why I save tabs in array? It's because, instead of, keeping 2 index numbers (one for browser tabs on top and one for my index in tree), it's easier to just arrange them in order and save it in localstorage.
// Another reason is that Object does not preserve order in chrome, I've been told that in Firefox it is. But I can't trust that.
async function ChromeAutoSaveData(BackupName, LoopTimer) {
setTimeout(function() {
ChromeAutoSaveData(BackupName, LoopTimer);
setInterval(function() {
if (schedule_save > 1 || BackupName != "") {schedule_save = 1;}
if (!hold && schedule_save > 0 && Object.keys(tabs).length > 1) {
if (running && schedule_save > 0 && Object.keys(tabs).length > 1) {
chrome.windows.getAll({windowTypes: ['normal'], populate: true}, function(w) {
var WinCount = w.length;
var t_count = 0;
......@@ -143,8 +123,8 @@ async function ChromeAutoSaveData(BackupName, LoopTimer) {
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
let winId = w[wIndex].id;
if (windows[winId] != undefined && windows[winId].group_bar != undefined && windows[winId].active_shelf != undefined && windows[winId].active_group != undefined && windows[winId].groups != undefined && windows[winId].folders != undefined) {
Windows.push({url1: w[wIndex].tabs[0].url, url2: w[wIndex].tabs[w[wIndex].tabs.length-1].url, group_bar: windows[winId].group_bar, active_shelf: windows[winId].active_shelf, active_group: windows[winId].active_group, groups: windows[winId].groups, folders: windows[winId].folders});
if (windows[winId] != undefined && windows[winId].group_bar != undefined && windows[winId].search_filter != undefined && windows[winId].active_shelf != undefined && windows[winId].active_group != undefined && windows[winId].groups != undefined && windows[winId].folders != undefined) {
Windows.push({url1: w[wIndex].tabs[0].url, url2: w[wIndex].tabs[w[wIndex].tabs.length-1].url, group_bar: windows[winId].group_bar, search_filter: windows[winId].search_filter, active_shelf: windows[winId].active_shelf, active_group: windows[winId].active_group, groups: windows[winId].groups, folders: windows[winId].folders});
}
let TabsCount = w[wIndex].tabs.length;
......@@ -167,7 +147,6 @@ async function ChromeAutoSaveData(BackupName, LoopTimer) {
}
}, LoopTimer);
}
function ChromeHashURL(tab){
if (tabs[tab.id] == undefined) {
tabs[tab.id] = {hash: 0, parent: tab.pinned ? "pin_list" : "tab_list", index: tab.index, expand: "n"};
......@@ -198,7 +177,7 @@ function ChromeListeners() {
});
chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
chrome.runtime.sendMessage({command: "tab_removed", windowId: removeInfo.windowId, tabId: tabId});
setTimeout(function() { chrome.runtime.sendMessage({command: "tab_removed", windowId: removeInfo.windowId, tabId: tabId}); },5);
delete tabs[tabId];
schedule_save++;
});
......@@ -259,7 +238,7 @@ function ChromeListeners() {
});
chrome.windows.onCreated.addListener(function(window) {
windows[window.id] = {group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
windows[window.id] = {group_bar: opt.groups_toolbar_default, search_filter: "url", active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
schedule_save++;
});
......@@ -269,7 +248,7 @@ function ChromeListeners() {
});
chrome.runtime.onSuspend.addListener(function() {
hold = true;
running = false;
});
}
......@@ -301,6 +280,24 @@ function ChromeMessageListeners() {
sendResponse(windows[message.windowId].active_group);
}
break;
case "set_search_filter":
windows[message.windowId].search_filter = message.search_filter;
schedule_save++;
break;
case "get_search_filter":
if (windows[message.windowId]) {
sendResponse(windows[message.windowId].search_filter);
}
break;
case "set_active_shelf":
windows[message.windowId].active_shelf = message.active_shelf;
schedule_save++;
......@@ -325,8 +322,8 @@ function ChromeMessageListeners() {
case "get_browser_tabs":
sendResponse(tabs);
break;
case "is_bg_busy":
sendResponse(hold);
case "is_bg_running":
sendResponse(running);
break;
case "update_tab":
if (tabs[message.tabId]) {
......@@ -336,6 +333,10 @@ function ChromeMessageListeners() {
schedule_save++;
}
break;
case "get_theme":
let theme = LoadData(("theme"+localStorage["current_theme"]), {"TabsSizeSetNumber": 2, "ToolbarShow": true, "toolbar": DefaultToolbar});
sendResponse(theme);
break;
}
});
}
......@@ -2,26 +2,33 @@
// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
if (localStorage.getItem("t0") !== null){
LoadV015(0);
} else {
if (browserId == "F") {
LoadPreferences();
FirefoxStart();
FirefoxMessageListeners();
}
function FirefoxStart() {
var SafeToRun = true;
chrome.tabs.query({windowType: "normal"}, function(t) {
chrome.tabs.query({}, function(t) {
// will loop forever if session restore tab is found
for (var tabIndex = 0; tabIndex < t.length; tabIndex++) {
if (t[tabIndex].url.match("about:sessionrestore") && t.length < 5) {
if (t[tabIndex].url.match("about:sessionrestore") && t.length < 10) {
SafeToRun = false;
chrome.tabs.update(t[tabIndex].id, { active: true });
}
if (tabIndex == t.length-1) {
if (SafeToRun) {
FirefoxLoadTabs(0);
if (localStorage.getItem("t0") !== null){
LoadV015(0);
} else {
if (localStorage.getItem("tabs") !== null){
FirefoxLoadV100(0);
} else {
FirefoxLoadTabs(0);
}
}
} else {
setTimeout(function() {
FirefoxStart();
......@@ -31,114 +38,75 @@ function FirefoxStart() {
}
});
}
function FirefoxLoadTabs(retry) {
chrome.windows.getAll({windowTypes: ["normal"], populate: true}, function(w) {
var refTabs = {};
var tt_ids = {};
var tabs_matched = 0;
var tabs_count = 0;
for (var wIndex = 0; wIndex < w.length; wIndex++) {
tabs_count += w[wIndex].tabs.length;
}
// load tabs and windows from hdd
var LoadedWindows = LoadData("windows", []);
var LoadedTabs = LoadData("tabs", []);
// if loaded tabs mismatch by 50%, then try to load back
if (LoadedTabs.length < tabs_count*0.5 || retry > 0) {
LoadedTabs = LoadData("tabs_BAK"+retry, []);
}
// if loaded windows mismatch, then try to load back
if (LoadedWindows.length < w.length || retry > 0) {
LoadedWindows = LoadData("windows_BAK"+retry, []);
}
// CACHED COUNTS AND STUFF
var lastWinId = w[w.length-1].id;
var lastTabId = w[w.length-1].tabs[w[w.length-1].tabs.length-1].id;
var LoadedWinCount = LoadedWindows.length;
var LoadedTabsCount = LoadedTabs.length;
var WinCount = w.length;
for (var wIndex = 0; wIndex < WinCount; wIndex++) {
let winIndex = wIndex;
let winId = w[winIndex].id;
let tabsCount = w[winIndex].tabs.length;
let win = Promise.resolve(browser.sessions.getWindowValue(winId, "TTId")).then(function(TTId) { // LOAD TTID FROM FIREFOX GET WINDOW VALUE
if (TTId != undefined) {
windows[winId] = {ttid: TTId, group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
// LOAD TTID FROM FIREFOX GET WINDOW VALUE
let win = Promise.resolve(browser.sessions.getWindowValue(winId, "TTdata")).then(function(WindowData) {
if (opt.skip_load == false && WindowData != undefined) {
windows[winId] = Object.assign({}, WindowData);
} else {
windows[winId] = {ttid: "", group_bar: true, active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, name: caption_ungrouped_group, font: ""}}, folders: {}};
windows[winId] = {ttid: "", group_bar: opt.groups_toolbar_default, search_filter: "url", active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, activetab_ttid: "", name: caption_ungrouped_group, font: ""}}, folders: {}};
}
for (var tIndex = 0; tIndex < tabsCount; tIndex++) {
let tabIndex = tIndex;
let tabId = w[winIndex].tabs[tabIndex].id;
let tabPinned = w[winIndex].tabs[tabIndex].pinned;
let tab = Promise.resolve(browser.sessions.getTabValue(tabId, "TTId")).then(function(TTId) { // LOAD TTID FROM FIREFOX GET TAB VALUE
if (TTId != undefined) {
tabs[tabId] = {ttid: TTId, parent: tabPinned ? "pin_list" : "tab_list", index: tabIndex, expand: "n"};
// LOAD TTID FROM FIREFOX GET TAB VALUE
let tab = Promise.resolve(browser.sessions.getTabValue(tabId, "TTdata")).then(function(TabData) {
if (opt.skip_load == false && TabData != undefined) {
tabs[tabId] = Object.assign({}, TabData);
tt_ids[tabs[tabId].ttid] = tabId;
tabs_matched++;
} else {
tabs[tabId] = {ttid: "", parent: tabPinned ? "pin_list" : "tab_list", index: tabIndex, expand: "n"};
tabs[tabId] = {ttid: "", parent_ttid: "", parent: tabPinned ? "pin_list" : "tab_list", index: tabIndex, expand: "n"};
}
// IF ON LAST TAB AND LAST WINDOW, START MATCHING LOADED DATA
if (tabId == lastTabId && winId == lastWinId) {
for (var ThisSessonWinId in windows) {
if (windows[ThisSessonWinId].ttid != ""){
for (var LwIndex = 0; LwIndex < LoadedWinCount; LwIndex++) {
if (LoadedWindows[LwIndex].ttid == windows[ThisSessonWinId].ttid) {
windows[ThisSessonWinId].group_bar = LoadedWindows[LwIndex].group_bar;
windows[ThisSessonWinId].active_shelf = LoadedWindows[LwIndex].active_shelf;
windows[ThisSessonWinId].active_group = LoadedWindows[LwIndex].active_group;
if (Object.keys(LoadedWindows[LwIndex].groups).length > 0) { windows[ThisSessonWinId].groups = Object.assign({}, LoadedWindows[LwIndex].groups); }
if (Object.keys(LoadedWindows[LwIndex].folders).length > 0) { windows[ThisSessonWinId].folders = Object.assign({}, LoadedWindows[LwIndex].folders); }
LoadedWindows[LwIndex].ttid = "";
break;
}
}
} else {
if (windows[ThisSessonWinId].ttid == ""){
AppendWinTTId(parseInt(ThisSessonWinId));
}
}
// OK, DONE WITH WINDOWS, START TABS LOOP
for (var ThisSessonTabId in tabs) {
if (tabs[ThisSessonTabId].ttid != ""){
for (var LtabIndex = 0; LtabIndex < LoadedTabsCount; LtabIndex++) {
if (LoadedTabs[LtabIndex].ttid == tabs[ThisSessonTabId].ttid) {
refTabs[LoadedTabs[LtabIndex].id] = ThisSessonTabId;
tabs[ThisSessonTabId].parent = LoadedTabs[LtabIndex].parent;
tabs[ThisSessonTabId].index = LoadedTabs[LtabIndex].index;
tabs[ThisSessonTabId].expand = LoadedTabs[LtabIndex].expand;
LoadedTabs[LtabIndex].ttid = "";
tabs_matched++;
break;
}
}
} else {
if (tabs[ThisSessonTabId].ttid == ""){
AppendTabTTId(parseInt(ThisSessonTabId));
}
}
// OK, DONE, NOW REPLACE OLD PARENTS IDS WITH THIS SESSION IDS
for (var ThisSessonTabId in tabs) {
if (refTabs[tabs[ThisSessonTabId].parent] != undefined) {
tabs[ThisSessonTabId].parent = refTabs[tabs[ThisSessonTabId].parent];
if (tt_ids[tabs[ThisSessonTabId].parent_ttid] != undefined) {
tabs[ThisSessonTabId].parent = tt_ids[tabs[ThisSessonTabId].parent_ttid];
}
}
// OK, SAME THING FOR ACTIVE TABS IN GROUPS
for (var ThisSessonWinId in windows) {
for (var group in windows[ThisSessonWinId].groups) {
if (refTabs[windows[ThisSessonWinId].groups[group].activetab]) {
windows[ThisSessonWinId].groups[group].activetab = refTabs[windows[ThisSessonWinId].groups[group].activetab];
if (tt_ids[windows[ThisSessonWinId].groups[group].activetab_ttid] != undefined) {
windows[ThisSessonWinId].groups[group].activetab = tt_ids[windows[ThisSessonWinId].groups[group].activetab_ttid];
}
}
}
......@@ -146,14 +114,10 @@ function FirefoxLoadTabs(retry) {
// TODO
// replace parent tab ids for each folder using reference_tabs, unless tabs will be nested ONLY in tabs and folders ONLY in folders, I did not decide yet
// will try to find tabs for 3 times
if (opt.skip_load == true || retry > 2 || (tabs_matched > tabs_count*0.5)) {
hold = false;