Propertly handle history buttons and fix dns resolve
This commit is contained in:
parent
fc42cba8f8
commit
f90f82f36c
|
@ -2,7 +2,7 @@ import cairo
|
|||
import threading
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from dns.resolver import NXDOMAIN, resolve
|
||||
from dns.resolver import NXDOMAIN
|
||||
from izzylib.exceptions import DNSResolverError
|
||||
from izzylib.misc import class_name
|
||||
from izzylib.url import Address
|
||||
|
@ -16,6 +16,7 @@ from ..widgets import Box, FileChooser
|
|||
from ..functions import (
|
||||
BuilderBase,
|
||||
connect,
|
||||
resolve_address,
|
||||
run_in_gui_thread,
|
||||
set_image
|
||||
)
|
||||
|
@ -348,13 +349,17 @@ class WebTab(BuilderBase, Gtk.Box):
|
|||
self['navbar-stop'].set_sensitive(loading)
|
||||
self['navbar-refresh'].set_sensitive(not loading)
|
||||
|
||||
for button, action in {'navbar-prev': self.webview.can_go_back(), 'navbar-next': self.webview.can_go_forward()}.items():
|
||||
self[button].set_sensitive(action)
|
||||
#self.set_history_button_state()
|
||||
|
||||
if self.window.active_tab == self:
|
||||
self.window.set_button_state(self.id)
|
||||
|
||||
|
||||
def set_history_button_state(self):
|
||||
for button, action in {'navbar-prev': self.webview.can_go_back(), 'navbar-next': self.webview.can_go_forward()}.items():
|
||||
self[button].set_sensitive(action)
|
||||
|
||||
|
||||
def set_favicon(self, icon=None):
|
||||
icon = icon or self.favicon or 'image-x-generic'
|
||||
logging.debug(f'Set icon for page: {class_name(icon)}, {self.url}')
|
||||
|
@ -517,7 +522,7 @@ class WebTab(BuilderBase, Gtk.Box):
|
|||
## Is the url.domain an actual domain?
|
||||
if not keyword:
|
||||
try:
|
||||
address = Address(resolve(url.domain))
|
||||
address = Address(resolve_address(url.domain))
|
||||
|
||||
logging.verbose('Url without protocol')
|
||||
|
||||
|
|
|
@ -59,6 +59,9 @@ class WebviewHandler(ComponentBase):
|
|||
connect(self.inspector, 'detach', self.handle_inspector, 'detach', original_args=True)
|
||||
connect(self.inspector, 'closed', self.handle_inspector, 'close', original_args=True)
|
||||
|
||||
## History list
|
||||
connect(self.webview.get_back_forward_list(), 'changed', self.handle_history_change, original_args=True)
|
||||
|
||||
|
||||
@property
|
||||
def inspector(self):
|
||||
|
@ -278,6 +281,10 @@ class WebviewHandler(ComponentBase):
|
|||
tabs.set_show_tabs(True)
|
||||
|
||||
|
||||
def handle_history_change(self, history, added, removed):
|
||||
self.tab.set_history_button_state()
|
||||
|
||||
|
||||
def handle_insecure_content(self, webview, event):
|
||||
logging.debug('insecure-content:', event.value_nick)
|
||||
return True
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
import cairo
|
||||
import multiprocessing
|
||||
import random
|
||||
import socket
|
||||
import threading
|
||||
import time
|
||||
import traceback
|
||||
|
||||
from ctypes import cdll, create_string_buffer, byref
|
||||
from dns.resolver import NXDOMAIN, resolve
|
||||
from izzylib.http_client import HttpClient
|
||||
from json.decoder import JSONDecodeError
|
||||
from platform import system
|
||||
|
@ -139,6 +141,26 @@ def new_pixbuf(image, size=16):
|
|||
return scale_pixbuf(image, size)
|
||||
|
||||
|
||||
def resolve_address(domain, type=None):
|
||||
domain = domain.strip()
|
||||
|
||||
if not type:
|
||||
type == 'AAAA'
|
||||
|
||||
try:
|
||||
return random.choice(resolve(domain, type)).address
|
||||
|
||||
except TypeError:
|
||||
# Not sure why this error is coming from dns.enum, so ignore it
|
||||
pass
|
||||
|
||||
except NXDOMAIN as e:
|
||||
if type != 'AAAA':
|
||||
raise e
|
||||
|
||||
return random.choice(resolve(domain, 'A')).address
|
||||
|
||||
|
||||
def run_in_gui_thread(func, *args, **kwargs):
|
||||
GLib.idle_add(lambda *unused: func(*args, **kwargs))
|
||||
|
||||
|
|
Reference in a new issue