Browse Source

make tooltips class safety

merge-requests/365/head
Vadim 10 years ago
parent
commit
7a75c8f90f
  1. 6
      src/tooltips.cc
  2. 14
      src/tooltips.h

6
src/tooltips.cc

@ -138,7 +138,7 @@ void Tooltip::wrap_lines(Glib::RefPtr<Gtk::TextBuffer> text_buffer) {
} }
void Tooltips::show(const Gdk::Rectangle& rectangle, bool disregard_drawn) { void Tooltips::show(const Gdk::Rectangle& rectangle, bool disregard_drawn) {
for(auto& tooltip: *this) { for(auto &tooltip : tooltip_list) {
tooltip.update(); tooltip.update();
if(rectangle.intersects(tooltip.activation_rectangle)) { if(rectangle.intersects(tooltip.activation_rectangle)) {
tooltip.adjust(disregard_drawn); tooltip.adjust(disregard_drawn);
@ -150,7 +150,7 @@ void Tooltips::show(const Gdk::Rectangle& rectangle, bool disregard_drawn) {
} }
void Tooltips::show(bool disregard_drawn) { void Tooltips::show(bool disregard_drawn) {
for(auto& tooltip: *this) { for(auto &tooltip : tooltip_list) {
tooltip.update(); tooltip.update();
tooltip.adjust(disregard_drawn); tooltip.adjust(disregard_drawn);
tooltip.window->show_all(); tooltip.window->show_all();
@ -158,7 +158,7 @@ void Tooltips::show(bool disregard_drawn) {
} }
void Tooltips::hide() { void Tooltips::hide() {
for(auto& tooltip: *this) { for(auto &tooltip : tooltip_list) {
if(tooltip.window) if(tooltip.window)
tooltip.window->hide(); tooltip.window->hide();
} }

14
src/tooltips.h

@ -25,14 +25,26 @@ private:
int tooltip_width, tooltip_height; int tooltip_width, tooltip_height;
}; };
class Tooltips : public std::list<Tooltip> { class Tooltips {
public: public:
using iterator = typename std::list<Tooltip>::iterator;
static void init() {drawn_tooltips_rectangle=Gdk::Rectangle();} static void init() {drawn_tooltips_rectangle=Gdk::Rectangle();}
void show(const Gdk::Rectangle& rectangle, bool disregard_drawn=false); void show(const Gdk::Rectangle& rectangle, bool disregard_drawn=false);
void show(bool disregard_drawn=false); void show(bool disregard_drawn=false);
void hide(); void hide();
void clear() {tooltip_list.clear();};
template<typename... Ts>
void emplace_back(Ts&&... params)
{
tooltip_list.emplace_back(std::forward<Ts>(params)...);
}
static Gdk::Rectangle drawn_tooltips_rectangle; static Gdk::Rectangle drawn_tooltips_rectangle;
private:
std::list<Tooltip> tooltip_list;
}; };
#endif // JUCI_TOOLTIPS_H_ #endif // JUCI_TOOLTIPS_H_

Loading…
Cancel
Save