LINUX.ORG.RU

wibar не меняет высоты при mouse::enter

 ,


0

3

Захотел, чтобы при наведении мыши на панель она увеличивалась. Написал такое:

...
s.mywibox = awful.wibar({height = beautiful.wibar_height, position = "bottom", screen = s })
s.mywibox:connect_signal("mouse::enter", function (self)
        self.height = beautiful.wibar_height_focused
        naughty.notify({text=tostring(self.height)})
    end)
s.mywibox:connect_signal("mouse::leave", function (self)
        self.height = beautiful.wibar_height
    end)
...

Notify чисто для теста, что событие происходит. Проблема в том, что notify с текущей высотой wibar происходит, но высота wibar не меняется. Что я делаю не так?

★★

Последнее исправление: snake266 (всего исправлений: 1)

Ответ на: комментарий от mord0d

Спасибо! Но видимо я делаю что-то не так:

s.mywibox:connect_signal("mouse::enter", function (self)
         self:geometry({height=beautiful.wibar_height_focused})
        naughty.notify({text=tostring(self.height)})
    end)

Оно не изменяет высоту даже если сделать так:

s.mywibox:connect_signal("mouse::enter", function (self)
         self:geometry({height=300})
        naughty.notify({text=tostring(self.height)})
    end)

Но если туда поставить, например, x, то оно сдвинется и вернётся обратно:

s.mywibox:connect_signal("mouse::enter", function (self)
         self:geometry({x=300})
        naughty.notify({text=tostring(self.height)})
    end)
    s.mywibox:connect_signal("mouse::leave", function (self)
        self:geometry({x=0})
    end)
snake266 ★★
() автор топика
Ответ на: комментарий от snake266

У тебя релизная версия?

Потому что у меня в master работает (нерабочее в релизном 4.3):

test = awful.wibar {
  screen = 1,
  position = "bottom",
  height = 30,
  visible = true
}

test:connect_signal("mouse::enter", function(w)
  w.height = 60
end)

test:connect_signal("mouse::leave", function(w)
  w.height = 30
end)
mord0d ★★★★★
()
Ответ на: комментарий от snake266

Видимо придется собирать самому из master

Вариантов костылей обойти баг я вижу два (три):

  • Попробовать явно вызвать wibar:emit_signal("property::geometry") после изменения геометрии (бессмысленно, потому что он должен срабатывать при собственно изменении геометрии);
  • Попробовать явно вызвать wibar:emit_signal("widget::redraw_needed") после изменения геометрии;
  • Скомбинировать оба сигнала (логично именно в этом порядке, но может (или не может!) сработать и в обратном).

Но это пальцем в небо, я релизный awesome последний раз щупал… в день релиза. ☺

У меня работает и через проп (wibar.height = 30), и через метод (wibar:geometry { height = 30 }), но тебе эта информация как рыбе акваланг:

  • awesome коммит 05a405b3 от 2022-08-18 на Lua 5.3.6;
  • FreeBSD 13.1-RELEASE-p1 amd64.
mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 2)