From b52d2479779f71f16d1a6c6fc75d090ed77b46cb Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Mon, 5 Jan 2026 14:32:28 +0100 Subject: [PATCH] Better behaviour of the resize cursor. --- gtk-imports.h | 1 + yellownotes.cpp | 29 ++++++++++++++++++++++++++++- yellownotes.h | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/gtk-imports.h b/gtk-imports.h index 803a6cd..fed27dd 100644 --- a/gtk-imports.h +++ b/gtk-imports.h @@ -674,6 +674,7 @@ DECL(const gchar*, gtk_window_get_title, (GtkWindow* window)) DECL(void, gtk_widget_destroy, (GtkWidget* widget)) DECL(void, gtk_container_add, (GtkContainer* container, GtkWidget* widget)) DECL(void, gtk_container_remove, (GtkContainer* container, GtkWidget* widget)) +DECL(void, gtk_container_set_border_width, (GtkContainer *container, guint width)); DECL(gboolean, gtk_widget_is_visible, (GtkWidget* widget)) DECL(GtkWidget*, gtk_label_new, (const char* str)) diff --git a/yellownotes.cpp b/yellownotes.cpp index cfbb92f..a784725 100644 --- a/yellownotes.cpp +++ b/yellownotes.cpp @@ -48,6 +48,14 @@ public: std::string os_host; }; +typedef enum { + NONE, + BOTTOM_RIGHT, + BOTTOM, + RIGHT +} YellowNoteResize_t; + + class YellowNote { @@ -110,6 +118,8 @@ private: bool _resize_right; bool _resize_bottom; bool _resize_edge; + YellowNoteResize_t _resize_type; + int _x_orig; int _y_orig; @@ -1142,6 +1152,7 @@ YellowNote::YellowNote(YellowNotes *notes, const std::string &filename) _resize_bottom = false; _resize_edge = false; _resize_right = false; + _resize_type = NONE; _color = ColorType_t::YELLOW; _color_changed = false; @@ -1251,6 +1262,8 @@ YellowNote::YellowNote(YellowNotes *notes, const std::string &filename) gtk_container_add(_evt_box, _frame); gtk_container_add(_note_widget, _evt_box); + gtk_container_set_border_width(_evt_box, 0); + gtk_widget_show_all(_note_widget); /*while (!gtk_widget_is_visible(_note_widget)) { @@ -1745,6 +1758,7 @@ bool YellowNote::move_begin(GtkWidget *sender, GdkEventButton *evt) int threshold = 8; + /* if (AROUND(y, frame_bottom) && AROUND(x, frame_right)) { _resize_edge = true; } else if (AROUND(y, frame_bottom)) { @@ -1752,6 +1766,14 @@ bool YellowNote::move_begin(GtkWidget *sender, GdkEventButton *evt) } else if (AROUND(x, frame_right)) { _resize_right = true; } + */ + if (_resize_type == BOTTOM_RIGHT) { + _resize_edge = true; + } else if (_resize_type == BOTTOM) { + _resize_bottom = true; + } else if (_resize_type == RIGHT) { + _resize_right = true; + } return false; } @@ -1832,18 +1854,23 @@ bool YellowNote::moving(GtkWidget *sender, GdkEventMotion *evt) GdkWindow *window = gtk_widget_get_window(_frame); GdkCursor *c; - int threshold = 8; + int threshold = 16; if (y >= header_top && y <= header_bottom) { c = gdk_cursor_new(GDK_LEFT_PTR); + _resize_type = NONE; } else if (AROUND(x, frame_right) && AROUND(y, frame_bottom)) { c = gdk_cursor_new(GDK_BOTTOM_RIGHT_CORNER); + _resize_type = BOTTOM_RIGHT; } else if (AROUND(x, frame_right)) { c = gdk_cursor_new(GDK_RIGHT_SIDE); + _resize_type = RIGHT; } else if (AROUND(y, frame_bottom)) { c = gdk_cursor_new(GDK_BOTTOM_SIDE); + _resize_type = BOTTOM; } else { c = nullptr; + _resize_type = NONE; } gdk_window_set_cursor(window, c); diff --git a/yellownotes.h b/yellownotes.h index 4282bd3..ed18ff7 100644 --- a/yellownotes.h +++ b/yellownotes.h @@ -14,7 +14,7 @@ class SettingContainer; #define YELLOWNOTE_MAJOR "1" #define YELLOWNOTE_MINOR "0" -#define YELLOWNOTE_PATCH "2" +#define YELLOWNOTE_PATCH "3" #define YELLOWNOTE_VERSION YELLOWNOTE_MAJOR "." YELLOWNOTE_MINOR "." YELLOWNOTE_PATCH #define YELLOWNOTE_FILE_VERSION 3