|
@@ -928,16 +928,36 @@ public:
|
|
|
TextureButton *favorite_button;
|
|
|
TextureRect *icon;
|
|
|
bool icon_needs_reload;
|
|
|
+ bool hover;
|
|
|
|
|
|
ProjectListItemControl() {
|
|
|
favorite_button = NULL;
|
|
|
icon = NULL;
|
|
|
icon_needs_reload = true;
|
|
|
+ hover = false;
|
|
|
}
|
|
|
|
|
|
void set_is_favorite(bool fav) {
|
|
|
favorite_button->set_modulate(fav ? Color(1, 1, 1, 1) : Color(1, 1, 1, 0.2));
|
|
|
}
|
|
|
+
|
|
|
+ void _notification(int p_what) {
|
|
|
+ switch (p_what) {
|
|
|
+ case NOTIFICATION_MOUSE_ENTER: {
|
|
|
+ hover = true;
|
|
|
+ update();
|
|
|
+ } break;
|
|
|
+ case NOTIFICATION_MOUSE_EXIT: {
|
|
|
+ hover = false;
|
|
|
+ update();
|
|
|
+ } break;
|
|
|
+ case NOTIFICATION_DRAW: {
|
|
|
+ if (hover) {
|
|
|
+ draw_style_box(get_stylebox("hover", "Tree"), Rect2(Point2(), get_size() - Size2(10, 0) * EDSCALE));
|
|
|
+ }
|
|
|
+ } break;
|
|
|
+ }
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
class ProjectList : public ScrollContainer {
|
|
@@ -1260,6 +1280,8 @@ void ProjectList::create_project_item_control(int p_index) {
|
|
|
TextureButton *favorite = memnew(TextureButton);
|
|
|
favorite->set_name("FavoriteButton");
|
|
|
favorite->set_normal_texture(favorite_icon);
|
|
|
+ // This makes the project's "hover" style display correctly when hovering the favorite icon
|
|
|
+ favorite->set_mouse_filter(MOUSE_FILTER_PASS);
|
|
|
favorite->connect("pressed", this, "_favorite_pressed", varray(hb));
|
|
|
favorite_box->add_child(favorite);
|
|
|
favorite_box->set_alignment(BoxContainer::ALIGN_CENTER);
|