Merge pull request #3145 from haug1/feat/hover-for-all-modules-by-class
feat(#2989): (optional) hover for all modules
This commit is contained in:
commit
87cc40e6e2
|
@ -38,6 +38,8 @@ class AModule : public IModule {
|
||||||
Gtk::EventBox event_box_;
|
Gtk::EventBox event_box_;
|
||||||
|
|
||||||
virtual bool handleToggle(GdkEventButton *const &ev);
|
virtual bool handleToggle(GdkEventButton *const &ev);
|
||||||
|
virtual bool handleMouseEnter(GdkEventCrossing *const &ev);
|
||||||
|
virtual bool handleMouseLeave(GdkEventCrossing *const &ev);
|
||||||
virtual bool handleScroll(GdkEventScroll *);
|
virtual bool handleScroll(GdkEventScroll *);
|
||||||
virtual bool handleRelease(GdkEventButton *const &ev);
|
virtual bool handleRelease(GdkEventButton *const &ev);
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,16 @@ An example user-controlled stylesheet that just changes the color of the clock t
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Hover-effect
|
||||||
|
|
||||||
|
You can apply special styling to any module for when the cursor hovers it.
|
||||||
|
|
||||||
|
```
|
||||||
|
#clock:hover {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
# SEE ALSO
|
# SEE ALSO
|
||||||
|
|
||||||
- *waybar(5)*
|
- *waybar(5)*
|
||||||
|
|
|
@ -48,6 +48,11 @@ button:hover {
|
||||||
box-shadow: inset 0 -3px #ffffff;
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* you can set a style on hover for any module like this */
|
||||||
|
#pulseaudio:hover {
|
||||||
|
background-color: #a37800;
|
||||||
|
}
|
||||||
|
|
||||||
#workspaces button {
|
#workspaces button {
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
|
@ -27,6 +27,9 @@ AModule::AModule(const Json::Value& config, const std::string& name, const std::
|
||||||
spdlog::warn("Wrong actions section configuration. See config by index: {}", it.index());
|
spdlog::warn("Wrong actions section configuration. See config by index: {}", it.index());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
event_box_.signal_enter_notify_event().connect(sigc::mem_fun(*this, &AModule::handleMouseEnter));
|
||||||
|
event_box_.signal_leave_notify_event().connect(sigc::mem_fun(*this, &AModule::handleMouseLeave));
|
||||||
|
|
||||||
// configure events' user commands
|
// configure events' user commands
|
||||||
// hasUserEvent is true if any element from eventMap_ is satisfying the condition in the lambda
|
// hasUserEvent is true if any element from eventMap_ is satisfying the condition in the lambda
|
||||||
bool hasUserEvent =
|
bool hasUserEvent =
|
||||||
|
@ -83,6 +86,20 @@ auto AModule::doAction(const std::string& name) -> void {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AModule::handleMouseEnter(GdkEventCrossing* const& e) {
|
||||||
|
if (auto* module = event_box_.get_child(); module != nullptr) {
|
||||||
|
module->set_state_flags(Gtk::StateFlags::STATE_FLAG_PRELIGHT);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AModule::handleMouseLeave(GdkEventCrossing* const& e) {
|
||||||
|
if (auto* module = event_box_.get_child(); module != nullptr) {
|
||||||
|
module->unset_state_flags(Gtk::StateFlags::STATE_FLAG_PRELIGHT);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool AModule::handleToggle(GdkEventButton* const& e) { return handleUserEvent(e); }
|
bool AModule::handleToggle(GdkEventButton* const& e) { return handleUserEvent(e); }
|
||||||
|
|
||||||
bool AModule::handleRelease(GdkEventButton* const& e) { return handleUserEvent(e); }
|
bool AModule::handleRelease(GdkEventButton* const& e) { return handleUserEvent(e); }
|
||||||
|
|
Loading…
Reference in New Issue