diff options
author | Julien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr> | 2019-10-31 10:42:37 +0100 |
---|---|---|
committer | Julien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr> | 2019-10-31 10:42:37 +0100 |
commit | eaba4fa593efd2f192a777654dcf7a03fd3f0ff8 (patch) | |
tree | 2613f68e01a555f317f97913c01b54b1b9dc9f77 /libs/gtkmm2ext | |
parent | fb9203998b0481194a5424d5811c5c79e0f7e0fe (diff) |
Update |offset| instead of changing the formula
So that the test to see if it fits also takes the new offset into
account.
Diffstat (limited to 'libs/gtkmm2ext')
-rw-r--r-- | libs/gtkmm2ext/utils.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libs/gtkmm2ext/utils.cc b/libs/gtkmm2ext/utils.cc index 6d9e47e80e..8c03d20c33 100644 --- a/libs/gtkmm2ext/utils.cc +++ b/libs/gtkmm2ext/utils.cc @@ -409,6 +409,7 @@ _position_menu_anchored (int& x, int& y, bool& push_in, for ( ; i != items.end(); ++i) { const Label* label_widget = dynamic_cast<const Label*>(i->get_child()); if (label_widget && selected == ((std::string) label_widget->get_label())) { + offset += (i->size_request().height - allocation.get_height()) / 2; break; } offset += i->size_request().height; @@ -416,13 +417,13 @@ _position_menu_anchored (int& x, int& y, bool& push_in, if (i != items.end() && y - offset >= monitor.get_y() && y - offset + menu_req.height <= monitor.get_y() + monitor.get_height()) { - y += allocation.get_height() / 2 - i->size_request().height / 2 - offset; /* a) */ + y -= offset; /* a) */ } else if (y + allocation.get_height() + menu_req.height <= monitor.get_y() + monitor.get_height()) { y += allocation.get_height(); /* b) */ } else if ((y - menu_req.height) >= monitor.get_y()) { y -= menu_req.height; /* c) */ } else if (i != items.end()) { - y += allocation.get_height() / 2 - i->size_request().height / 2 - offset; /* d) */ + y -= offset; /* d) */ } else if (monitor.get_height() - allocation.get_height() >= 2*(y - monitor.get_y())) { y += allocation.get_height(); /* e), more space below */ } else { |