-
Notifications
You must be signed in to change notification settings - Fork 37
battery: make scroll change brightness #209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -174,6 +174,23 @@ void WayfireBatteryInfo::update_details() | |
} | ||
} | ||
|
||
void WayfireBatteryInfo::on_battery_scroll(GdkEventScroll *event) | ||
{ | ||
if (scroll_counter <= 0) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How does GDK behave when we have smooth scroll, do we get separate events for discrete and smooth scrolling, or are they bunched here together? Can In general I am kinda hesitant to have a hard threshold like this (i.e update every 3 events). Wouldn't it be better to update on every X units of scroll, or even better, every milliseconds, where N is a configurable period of time? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To complicate things further, there is also GdkEventScroll.GdkScrollDirection, which tells when the delta_x/y values are valid to use or which direction to scroll. |
||
if (event->delta_y < 0) | ||
{ | ||
std::system(battery_scrollup_command.value().c_str()); | ||
} else if (0 < event->delta_y) | ||
{ | ||
std::system(battery_scrolldown_command.value().c_str()); | ||
} | ||
|
||
scroll_counter = 3; | ||
} | ||
|
||
scroll_counter--; | ||
} | ||
|
||
void WayfireBatteryInfo::update_state() | ||
{ | ||
std::cout << "unimplemented reached, in battery.cpp: " | ||
|
@@ -222,10 +239,11 @@ bool WayfireBatteryInfo::setup_dbus() | |
} | ||
|
||
// TODO: simplify config loading | ||
|
||
static const std::string default_font = "default"; | ||
void WayfireBatteryInfo::init(Gtk::HBox *container) | ||
{ | ||
scroll_counter = 0; | ||
|
||
if (!setup_dbus()) | ||
{ | ||
return; | ||
|
@@ -234,6 +252,10 @@ void WayfireBatteryInfo::init(Gtk::HBox *container) | |
button_box.add(icon); | ||
button.get_style_context()->add_class("flat"); | ||
|
||
button.set_events(Gdk::SCROLL_MASK | Gdk::SMOOTH_SCROLL_MASK); | ||
button.signal_scroll_event().connect_notify( | ||
sigc::mem_fun(this, &WayfireBatteryInfo::on_battery_scroll)); | ||
|
||
status_opt.set_callback([=] () { update_details(); }); | ||
font_opt.set_callback([=] () { update_font(); }); | ||
size_opt.set_callback([=] () { update_icon(); }); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not do it on every discrete event at 3% by default? It seems like you're losing some granularity and possibly introducing buggy behavior by doing nothing on some scroll events.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I was just doing what I thought ammen99 originally suggested. It just made sense to me because running so many commands at once makes the brightness update laggy on my system.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds like another thing which ought to be an option (granularity)