- Implemented Hide-on-mouseover

This commit is contained in:
Trigg 2024-02-23 11:52:12 +00:00
parent f67f5ccc4e
commit 7a2bc9845e
10 changed files with 280 additions and 28 deletions

View file

@ -245,7 +245,10 @@ class Discover:
self.voice_overlay.set_order(
config.getint("main", "order", fallback=0))
self.voice_overlay.set_hide_on_mouseover(
config.getboolean("text", "autohide", fallback=False))
config.getboolean("main", "autohide", fallback=False))
self.voice_overlay.set_mouseover_timer(
config.getint("main", "autohide_timer", fallback=1))
self.voice_overlay.set_horizontal(config.getboolean(
"main", "horizontal", fallback=False))
self.voice_overlay.set_guild_ids(self.parse_guild_ids(
@ -320,6 +323,8 @@ class Discover:
config.getint("text", "line_limit", fallback=20))
self.text_overlay.set_hide_on_mouseover(
config.getboolean("text", "autohide", fallback=False))
self.text_overlay.set_mouseover_timer(
config.getint("text", "autohide_timer", fallback=1))
self.text_overlay.set_monitor(monitor)
self.text_overlay.set_floating(

View file

@ -117,6 +117,13 @@
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="text_show_mouseover_adj">
<property name="lower">1</property>
<property name="upper">100</property>
<property name="value">1</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkListStore" id="voice_align_1_list">
<columns>
<!-- column-name key -->
@ -155,6 +162,13 @@
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="voice_show_mouseover_adj">
<property name="lower">1</property>
<property name="upper">100</property>
<property name="value">1</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
<object class="GtkAdjustment" id="voice_text_offset">
<property name="lower">-100</property>
<property name="upper">100</property>
@ -256,7 +270,7 @@
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=2 -->
<!-- n-columns=3 n-rows=2 -->
<object class="GtkGrid">
<property name="name">voice_grid</property>
<property name="visible">True</property>
@ -1448,7 +1462,72 @@
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
<property name="width">2</property>
<property name="width">3</property>
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=2 -->
<object class="GtkGrid">
<property name="name">voice_mouseover_grid</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="name">voice_hide_mouseover_label</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Hide Overlay on Mouseover</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="name">voice_show_mouseover_label</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Show again after (seconds)</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="name">voice_hide_mouseover</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<signal name="toggled" handler="voice_hide_mouseover_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="name">voice_show_mouseover</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="adjustment">voice_show_mouseover_adj</property>
<signal name="value-changed" handler="voice_mouseover_timeout_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
</object>
<packing>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
</object>
@ -1469,7 +1548,7 @@
</packing>
</child>
<child>
<!-- n-columns=2 n-rows=14 -->
<!-- n-columns=2 n-rows=16 -->
<object class="GtkGrid">
<property name="name">text_grid</property>
<property name="visible">True</property>
@ -1800,6 +1879,32 @@
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="name">text_hide_mouseover_label</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Hide Overlay on Mouseover</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">13</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="name">text_show_mouseover_label</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Show again after (seconds)</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">14</property>
</packing>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Reset Text Settings</property>
@ -1809,11 +1914,40 @@
<property name="receives-default">True</property>
<signal name="pressed" handler="text_reset_all" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">15</property>
</packing>
</child>
<child>
<object class="GtkCheckButton">
<property name="name">text_hide_mouseover</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<signal name="toggled" handler="text_hide_mouseover_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">13</property>
</packing>
</child>
<child>
<object class="GtkSpinButton">
<property name="name">text_show_mouseover</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="text" translatable="yes">1</property>
<property name="adjustment">text_show_mouseover_adj</property>
<property name="value">1</property>
<signal name="value-changed" handler="text_mouseover_timeout_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">14</property>
</packing>
</child>
<child>
<placeholder/>
</child>

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-28 19:09+0200\n"
"POT-Creation-Date: 2024-02-23 11:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -298,6 +298,12 @@ msgstr ""
msgid "Reset Voice Settings"
msgstr ""
msgid "Hide Overlay on Mouseover"
msgstr ""
msgid "Show again after (seconds)"
msgstr ""
msgid "Voice"
msgstr ""
@ -334,6 +340,9 @@ msgstr ""
msgid "Reset Text Settings"
msgstr ""
msgid "1"
msgstr ""
msgid "Text"
msgstr ""

View file

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-28 19:09+0200\n"
"POT-Creation-Date: 2024-02-23 11:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -65,7 +65,7 @@ msgstr "Symud y defnyddiwr i ystafell lais, yn ôl ID Ystafell"
msgid ""
"If tray icon is enabled, start with only tray icon and no configuration "
"window"
msgstr ""
msgstr "If tray icon is enabled, start with only tray icon and no configuration window"
msgid "For gamescope compatibility ensure ENV has 'GDK_BACKEND=x11'"
msgstr "Ar gyfer cydnawsedd gamescope sicrhau bod gan ENV 'GDK_BACKEND=x11'"
@ -228,7 +228,7 @@ msgid "Avatar"
msgstr "Avatar"
msgid "Show Names"
msgstr ""
msgstr "Dangos Enwau"
msgid "Font"
msgstr "Ffont"
@ -255,7 +255,7 @@ msgid "Show Test Content"
msgstr "Dangos cynnwys y prawf"
msgid "Test Data Count"
msgstr ""
msgstr "Profi Cyfrif Data"
msgid "Show While Disconnected"
msgstr "Dangos Wrth Ddatgysylltu"
@ -267,7 +267,7 @@ msgid "Limit text length"
msgstr "Cyfyngu ar hyd y testun"
msgid "Show Avatar"
msgstr ""
msgstr "Dangos Avatar"
msgid "Square Avatar"
msgstr "Avatar Sgwâr"
@ -285,13 +285,13 @@ msgid "Display Speakers Only"
msgstr "Dangos siaradwyr yn unig"
msgid "Speakers Grace Period"
msgstr ""
msgstr "Amser Siaradwr"
msgid "Overflow Style"
msgstr "Arddull gorlifo"
msgid "Order Users By"
msgstr ""
msgstr "Gorchmynion Defnyddwyr gan"
msgid "Highlight Self"
msgstr "Tynnu sylw at eich hunan"
@ -300,10 +300,16 @@ msgid "Border width"
msgstr "lled y ffin"
msgid "Padding between users"
msgstr ""
msgstr "Padio rhwng defnyddwyr"
msgid "Reset Voice Settings"
msgstr ""
msgstr "Ailosod Gosodiadau Llais"
msgid "Hide Overlay on Mouseover"
msgstr "Cuddio troshaenu ar mouseover"
msgid "Show again after (seconds)"
msgstr "Dangoswch eto ar ôl"
msgid "Voice"
msgstr "LLais"
@ -336,10 +342,13 @@ msgid "Server"
msgstr "Gweinydd"
msgid "Popup time limit"
msgstr ""
msgstr "Terfyn amser popup"
msgid "Reset Text Settings"
msgstr ""
msgstr "Ailosod Gosodiadau Testun"
msgid "1"
msgstr "1"
msgid "Text"
msgstr "Testun"
@ -375,7 +384,7 @@ msgid "Unknown"
msgstr "Anhysbys"
msgid "Reset Notification Settings"
msgstr ""
msgstr "Ailosodwch Gosodiadau Hysbysu "
msgid "Notification"
msgstr "Hysbysiad"
@ -399,7 +408,7 @@ msgid "Hide Overlays"
msgstr "Cuddio troslun"
msgid "Reset Core Settings"
msgstr ""
msgstr "Ailosod Gosodiadau Craidd"
msgid "Core"
msgstr "Craidd"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: unnamed project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-28 19:09+0200\n"
"POT-Creation-Date: 2024-02-23 11:44+0000\n"
"PO-Revision-Date: 2022-09-23 23:05+0200\n"
"Last-Translator: Baumfinder <baumkartoffel@outlook.de>\n"
"Language-Team: German <baumkartoffel@outlook.de>\n"
@ -314,6 +314,12 @@ msgstr ""
msgid "Reset Voice Settings"
msgstr ""
msgid "Hide Overlay on Mouseover"
msgstr ""
msgid "Show again after (seconds)"
msgstr ""
msgid "Voice"
msgstr "Sprache"
@ -350,6 +356,9 @@ msgstr ""
msgid "Reset Text Settings"
msgstr ""
msgid "1"
msgstr ""
msgid "Text"
msgstr "Text"

View file

@ -279,6 +279,12 @@ msgstr ""
msgid "Reset Voice Settings"
msgstr ""
msgid "Hide Overlay on Mouseover"
msgstr ""
msgid "Show again after (seconds)"
msgstr ""
msgid "Voice"
msgstr ""
@ -315,6 +321,9 @@ msgstr ""
msgid "Reset Text Settings"
msgstr ""
msgid "1"
msgstr ""
msgid "Text"
msgstr ""

View file

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-28 19:09+0200\n"
"POT-Creation-Date: 2024-02-23 11:44+0000\n"
"PO-Revision-Date: 2023-07-28 19:06+0200\n"
"Last-Translator: Noé Lopez <noelopez@free.fr>\n"
"Language-Team: English <kde-i18n-doc@kde.org>\n"
@ -307,6 +307,12 @@ msgstr "Espace entre les utilisateurs"
msgid "Reset Voice Settings"
msgstr "Réinitialiser les paramètres de voix"
msgid "Hide Overlay on Mouseover"
msgstr ""
msgid "Show again after (seconds)"
msgstr ""
msgid "Voice"
msgstr "Voix"
@ -343,6 +349,9 @@ msgstr "Limite de temps du popup"
msgid "Reset Text Settings"
msgstr "Réinitialiser les paramètres de texte"
msgid "1"
msgstr ""
msgid "Text"
msgstr "Texte"

View file

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-28 19:09+0200\n"
"POT-Creation-Date: 2024-02-23 11:44+0000\n"
"PO-Revision-Date: 2023-04-17 15:44+0300\n"
"Last-Translator: Ahmet Arda Kavakcı <ahmetardakavakci@gmail.com>\n"
"Language-Team: Turkish <ahmetardakavakci@gmail.com>\n"
@ -306,6 +306,12 @@ msgstr "Kullanıcılar arası iç boşluk"
msgid "Reset Voice Settings"
msgstr ""
msgid "Hide Overlay on Mouseover"
msgstr ""
msgid "Show again after (seconds)"
msgstr ""
msgid "Voice"
msgstr "Ses"
@ -342,6 +348,9 @@ msgstr ""
msgid "Reset Text Settings"
msgstr ""
msgid "1"
msgstr ""
msgid "Text"
msgstr "Yazı"

View file

@ -65,6 +65,7 @@ class OverlayWindow(Gtk.Window):
self.hidden = False
self.enabled = False
self.set_size_request(50, 50)
self.hide_on_mouseover = True
self.connect('draw', self.overlay_draw_pre)
# Set RGBA
screen = self.get_screen()
@ -97,9 +98,10 @@ class OverlayWindow(Gtk.Window):
self.floating = False
self.force_xshape = False
self.context = None
self.autohide = False
self.redraw_id = None
self.draw_blank = False
self.timeout_mouse_over = 1
self.timer_after_draw = None
if piggyback:
@ -108,6 +110,11 @@ class OverlayWindow(Gtk.Window):
self.get_screen().connect("composited-changed", self.check_composite)
self.get_screen().connect("monitors-changed", self.screen_changed)
self.get_screen().connect("size-changed", self.screen_changed)
self.get_window().set_events(self.get_window().get_events() | Gdk.EventMask.ENTER_NOTIFY_MASK)
self.connect("enter-notify-event", self.mouseover)
self.connect("leave-notify-event", self.mouseout)
self.mouse_over_timer = None
def set_gamescope_xatom(self, enabled):
if self.piggyback_parent:
@ -163,6 +170,26 @@ class OverlayWindow(Gtk.Window):
else:
if not self.hidden and self.enabled:
self.set_gamescope_xatom(1)
# If we're hiding on mouseover, allow mouse-in
if self.hide_on_mouseover:
# We've mouse-overed
if self.draw_blank:
self.set_untouchable()
context.set_source_rgba(0.0, 0.0, 0.0, 0.0)
context.set_operator(cairo.OPERATOR_SOURCE)
context.paint()
return
else:
(width, height) = self.get_size()
surface = cairo.ImageSurface(
cairo.FORMAT_ARGB32, width, height)
surface_ctx = cairo.Context(surface)
self.overlay_draw(None, surface_ctx)
reg = Gdk.cairo_region_create_from_surface(surface)
self.input_shape_combine_region(reg)
self.overlay_draw(_w, context, data)
def overlay_draw(self, _w, context, data=None):
@ -203,6 +230,16 @@ class OverlayWindow(Gtk.Window):
reg = Gdk.cairo_region_create_from_surface(surface)
self.input_shape_combine_region(reg)
def set_hide_on_mouseover(self, hide):
self.hide_on_mouseover = hide
if self.hide_on_mouseover:
self.set_needs_redraw()
else:
self.set_untouchable()
def set_mouseover_timer(self, time):
self.timeout_mouse_over = time
def unset_shape(self):
"""
Remove XShape (not input shape)
@ -375,12 +412,6 @@ class OverlayWindow(Gtk.Window):
self.set_gamescope_xatom(0)
self.hide()
def set_hide_on_mouseover(self, hide):
"""
Set Mouseover hide
"""
self.autohide = hide
def set_task(self, visible):
self.set_skip_pager_hint(not visible)
self.set_skip_taskbar_hint(not visible)
@ -390,3 +421,17 @@ class OverlayWindow(Gtk.Window):
def screen_changed(self, screen=None):
self.set_monitor(self.monitor)
def mouseover(self, a=None, b=None):
self.draw_blank = True
self.set_needs_redraw()
return True
def mouseout(self, a=None, b=None):
GLib.timeout_add_seconds(self.timeout_mouse_over, self.mouseout_timed)
return True
def mouseout_timed(self, a=None, b=None):
self.draw_blank = False
self.set_needs_redraw()

View file

@ -1132,3 +1132,17 @@ class MainSettingsWindow():
def notification_reset_all(self, button):
self.config_remove_section("notification")
self.read_config()
def voice_hide_mouseover_changed(self, button):
self.config_set("main", "autohide", "%s" % (button.get_active()))
def text_hide_mouseover_changed(self,button):
self.config_set("text", "autohide", "%s" % (button.get_active()))
def voice_mouseover_timeout_changed(self, button):
self.config_set("main", "autohide_timer", "%s" %
(int(button.get_value())))
def text_mouseover_timeout_changed(self, button):
self.config_set("text", "autohide_timer", "%s" %
(int(button.get_value())))