#include "entry.h"
#include "graphic.h"
#include "part.h"
+#include "slider.h"
#include "style.h"
-#include "vslider.h"
using namespace std;
if(multiline)
check_view_range();
- rebuild();
+ mark_rebuild();
}
void Entry::erase(unsigned pos, unsigned len)
if(multiline)
check_view_range();
- rebuild();
+ mark_rebuild();
}
bool Entry::get_selection(unsigned &start, unsigned &end) const
add(*slider);
slider->set_step(1);
slider->signal_value_changed.connect(sigc::mem_fun(this, &Entry::slider_value_changed));
- rebuild();
+ mark_rebuild();
}
check_view_range();
}
void Entry::animate(const Time::TimeDelta &)
{
cursor_blink = !cursor_blink;
- rebuild();
+ mark_rebuild();
}
-void Entry::on_geometry_change()
+void Entry::on_size_change()
{
if(multiline)
check_view_range();
if(multiline)
check_view_range();
- rebuild();
+ mark_rebuild();
}
void Entry::erase_selection(bool emit_change)
void Entry::check_cursor_blink()
{
+ const Part *cursor_part = style->get_part("cursor");
+ bool has_blink = (cursor_part && cursor_part->get_graphic(ACTIVE|FOCUS)!=cursor_part->get_graphic(NORMAL|FOCUS));
+
cursor_blink = (state&FOCUS);
- if((state&FOCUS) && style)
+ if((state&FOCUS) && style && has_blink)
{
- const Part *cursor_part = style->get_part("cursor");
- if(cursor_part && cursor_part->get_graphic(ACTIVE|FOCUS)!=cursor_part->get_graphic(NORMAL|FOCUS))
- {
- set_animation_interval(Time::sec/2);
- return;
- }
+ set_animation_interval(Time::sec/2);
+ mark_rebuild();
+ }
+ else
+ {
+ if(has_blink)
+ mark_rebuild();
+ stop_animation();
}
-
- stop_animation();
}
void Entry::check_view_range()
signal_scroll_position_changed.emit(first_row);
slider->set_range(0, scroll);
+ slider->set_page_size(visible_rows);
slider->set_value(scroll-first_row);
}
first_row = text.get_n_lines()-visible_rows-static_cast<unsigned>(value);
if(first_row!=old_first_row)
signal_scroll_position_changed.emit(first_row);
+ mark_rebuild();
}
}