Description: Fix hotcorner activation issues with HiDPI HiDPI users have found that accidental activation is difficult to control due to the hard-coded and fixed pixel way-point. Since HiDPI resolutions can vary, this patch enables users to control the pixel way-point via a slider-bar in budgie-settings Author: David Mohammed Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/budgie-extras/+bug/1773770 Origin: upstream commits b3b6daf26fd07236bf8a3aa0c5b4faea06e278b9 Last-Update: 2018-05-28 Reviewed-By: David Mohammed --- budgie-extras-0.4.4.orig/budgie-hotcorners/bhcorners +++ budgie-extras-0.4.4/budgie-hotcorners/bhcorners @@ -33,13 +33,14 @@ def watch(): user = bhc.user poslist = [(0, 0), (0, 0), (0, 0)] testpressure = False - limit = 220 while True: time.sleep(t) # check pressure settings once per 5 seconds if n == 0: - testpressure = bhc.get_pressure() + currpressure = bhc.get_pressure() + testpressure = currpressure[0] + limit = currpressure[1] # check if user is in the house, applet in the panel elif n == 12: if user not in subprocess.check_output("who").decode("utf-8"): --- budgie-extras-0.4.4.orig/budgie-hotcorners/bhctools.py +++ budgie-extras-0.4.4/budgie-hotcorners/bhctools.py @@ -50,7 +50,16 @@ def getres(*args): def get_pressure(): - return os.path.exists(pressure_trig) + setcustom = os.path.exists(pressure_trig) + try: + val = int(open(pressure_trig).read().strip()) + except (FileNotFoundError, ValueError): + val = None + return setcustom, val + + +def set_pressure(val): + open(pressure_trig, "wt").write(val) def executable_exists(ex): --- budgie-extras-0.4.4.orig/budgie-hotcorners/budgie_hcorners.py +++ budgie-extras-0.4.4/budgie-hotcorners/budgie_hcorners.py @@ -127,23 +127,40 @@ class BudgieHotCornersSettings(Gtk.Grid) self.setting = setting # grid & layout self.toggle = Gtk.CheckButton.new_with_label("Use pressure") - pressure = bhc.get_pressure() + pressuredata = bhc.get_pressure() + pressure = pressuredata[0] + pressure_val = pressuredata[1] self.toggle.set_active(pressure) self.toggle.connect("toggled", self.switch) self.attach(self.toggle, 0, 0, 1, 1) + self.pressure_slider = Gtk.Scale.new_with_range( + Gtk.Orientation.HORIZONTAL, 10, 100, 10 + ) + if not pressure: + self.pressure_slider.set_sensitive(False) + self.pressure_slider.set_value(40) + elif pressure_val: + self.pressure_slider.set_value(pressuredata[1] / 5) + self.pressure_slider.connect("value_changed", self.get_slider) + self.attach(self.pressure_slider, 0, 1, 1, 1) self.show_all() + def get_slider(self, slider): + val = int(self.pressure_slider.get_value()) * 5 + bhc.set_pressure(str(val)) + def switch(self, button, *args): - pressure = bhc.get_pressure() + pressure = bhc.get_pressure()[0] if pressure: try: os.remove(bhc.pressure_trig) - self.toggle.set_active(False) except FileNotFoundError: pass + self.pressure_slider.set_sensitive(False) else: - open(bhc.pressure_trig, "wt").write("") - self.toggle.set_active(True) + open(bhc.pressure_trig, "wt").write("200") + self.pressure_slider.set_value(40) + self.pressure_slider.set_sensitive(True) class BudgieHotCornersApplet(Budgie.Applet):