- Added Wayland multimonitor

- Redraw after avatar downloaded
- Show monitor select for free-placed overlay
This commit is contained in:
trigg 2020-10-19 13:44:44 +00:00
parent 188237e3eb
commit 060fc11818
6 changed files with 27 additions and 8 deletions

View file

@ -54,6 +54,7 @@ class OverlayWindow(Gtk.Window):
self.align_vert = 1
self.floating = False
self.force_xshape= False
self.context=None
def set_wayland_state(self):
if self.is_wayland:
@ -152,8 +153,12 @@ class OverlayWindow(Gtk.Window):
gdkwin.shape_combine_region(None, 0, 0)
self.queue_draw()
def set_monitor(self, idx):
def set_monitor(self, idx=None, mon=None):
self.monitor = idx
if self.is_wayland:
print(self)
if mon:
GtkLayerShell.set_monitor(self, mon)
self.force_location()
self.redraw()

View file

@ -44,5 +44,15 @@ class SettingsWindow(Gtk.VBox):
"Could not find monitor : %s" % (name))
return 0
def get_monitor_obj(self, name):
display = Gdk.Display.get_default()
if "get_n_monitors" in dir(display):
for i in range(0, display.get_n_monitors()):
if display.get_monitor(i).get_model() == name:
return display.get_monitor(i)
logging.info(
"Could not find monitor : %s" % (name))
return None
def present(self):
self.show_all()

View file

@ -37,6 +37,7 @@ class MainSettingsWindow(Gtk.Window):
nb.append_page(self.core_settings)
nb.set_tab_label_text(self.core_settings, "Core")
self.add(nb)
self.nb=nb
def close_window(self,a=None,b=None):
self.text_settings.close_window(a,b)
@ -49,4 +50,5 @@ class MainSettingsWindow(Gtk.Window):
self.voice_settings.present()
self.text_settings.present()
self.core_settings.present()
self.show_all()
self.nb.show()
self.show()

View file

@ -81,7 +81,7 @@ class TextSettingsWindow(SettingsWindow):
else:
self.align_x_widget.hide()
self.align_y_widget.hide()
self.align_monitor_widget.hide()
self.align_monitor_widget.show()
self.align_placement_widget.show()
if self.popup_style:
@ -170,7 +170,7 @@ class TextSettingsWindow(SettingsWindow):
self.overlay.set_enabled(self.enabled)
self.overlay.set_align_x(self.align_x)
self.overlay.set_align_y(self.align_y)
self.overlay.set_monitor(self.get_monitor_index(self.monitor))
self.overlay.set_monitor(self.get_monitor_index(self.monitor),self.get_monitor_obj(self.monitor))
self.overlay.set_floating(
self.floating, self.floating_x, self.floating_y, self.floating_w, self.floating_h)
self.overlay.set_bg(self.bg_col)
@ -450,7 +450,7 @@ class TextSettingsWindow(SettingsWindow):
if "get_monitor" in dir(display):
mon = display.get_monitor(button.get_active())
m_s = mon.get_model()
self.overlay.set_monitor(button.get_active())
self.overlay.set_monitor(button.get_active(), mon)
self.monitor = m_s
self.save_config()

View file

@ -224,6 +224,7 @@ class VoiceOverlayWindow(OverlayWindow):
self.def_avatar = pix
else:
self.avatars[id] = pix
self.redraw()
def delete_avatar(self, id):
if id in self.avatars:

View file

@ -31,7 +31,7 @@ class VoiceSettingsWindow(SettingsWindow):
else:
self.align_x_widget.hide()
self.align_y_widget.hide()
self.align_monitor_widget.hide()
self.align_monitor_widget.show()
self.align_placement_widget.show()
def read_config(self):
@ -85,7 +85,7 @@ class VoiceSettingsWindow(SettingsWindow):
self.overlay.set_only_speaking(self.only_speaking)
self.overlay.set_highlight_self(self.highlight_self)
self.overlay.set_icon_only(self.icon_only)
self.overlay.set_monitor(self.get_monitor_index(self.monitor))
self.overlay.set_monitor(self.get_monitor_index(self.monitor),self.get_monitor_obj(self.monitor))
self.overlay.set_vert_edge_padding(self.vert_edge_padding)
self.overlay.set_horz_edge_padding(self.horz_edge_padding)
self.overlay.set_order(self.order)
@ -446,7 +446,8 @@ class VoiceSettingsWindow(SettingsWindow):
if "get_monitor" in dir(display):
mon = display.get_monitor(button.get_active())
m_s = mon.get_model()
self.overlay.set_monitor(button.get_active())
self.overlay.set_monitor(button.get_active(), mon)
self.monitor = m_s
self.save_config()