From 5e8ac6ab55b883712696f0223a92b561b47ba578 Mon Sep 17 00:00:00 2001 From: 4fury-c3440d8 Date: Wed, 16 Nov 2022 21:43:36 +0300 Subject: [PATCH] lxpanel rebuild. --- .../files/mageia/mga-fix-deiconify.patch | 20 ++ .../mga-partial-workaround-for-issue-41.patch | 333 ++++++++++++++++++ desktop/lxde/lxpanel/pspec.xml | 4 +- 3 files changed, 356 insertions(+), 1 deletion(-) create mode 100644 desktop/lxde/lxpanel/files/mageia/mga-fix-deiconify.patch create mode 100644 desktop/lxde/lxpanel/files/mageia/mga-partial-workaround-for-issue-41.patch diff --git a/desktop/lxde/lxpanel/files/mageia/mga-fix-deiconify.patch b/desktop/lxde/lxpanel/files/mageia/mga-fix-deiconify.patch new file mode 100644 index 0000000000..aa0660b7fc --- /dev/null +++ b/desktop/lxde/lxpanel/files/mageia/mga-fix-deiconify.patch @@ -0,0 +1,20 @@ +--- lxpanel-0.10.1/plugins/task-button.c 2021-01-29 23:28:51.000000000 +0100 ++++ lxpanel-0.10.1/plugins/task-button.c.new 2022-09-08 12:08:46.579475426 +0200 +@@ -487,6 +487,9 @@ static void task_raise_window(TaskButton + if ((tk->desktop != ALL_WORKSPACES) && (tk->desktop != tb->desktop)) + Xclimsgx(xscreen, RootWindowOfScreen(xscreen), a_NET_CURRENT_DESKTOP, tk->desktop, 0, 0, 0, 0); + ++#if GTK_CHECK_VERSION(3, 0, 0) ++ Xclimsgx(xscreen, tk->win, a_NET_ACTIVE_WINDOW, 2, time, 0, 0, 0); ++#else + /* Raise the window. We can use NET_ACTIVE_WINDOW if the window manager supports it. + * Otherwise, do it the old way with XMapRaised and XSetInputFocus. */ + if (tb->flags.use_net_active) +@@ -510,6 +513,7 @@ static void task_raise_window(TaskButton + if (attr.map_state == IsViewable) + XSetInputFocus(xdisplay, tk->win, RevertToNone, time); + } ++#endif + + /* Change viewport if needed. */ + XWindowAttributes xwa; diff --git a/desktop/lxde/lxpanel/files/mageia/mga-partial-workaround-for-issue-41.patch b/desktop/lxde/lxpanel/files/mageia/mga-partial-workaround-for-issue-41.patch new file mode 100644 index 0000000000..74eddcd4e8 --- /dev/null +++ b/desktop/lxde/lxpanel/files/mageia/mga-partial-workaround-for-issue-41.patch @@ -0,0 +1,333 @@ +diff -Naurp lxpanel-0.10.1.orig/plugins/batt/batt.c lxpanel-0.10.1/plugins/batt/batt.c +--- lxpanel-0.10.1.orig/plugins/batt/batt.c 2019-03-01 00:31:41.000000000 +0100 ++++ lxpanel-0.10.1/plugins/batt/batt.c 2022-10-14 11:14:57.009987046 +0200 +@@ -446,6 +446,23 @@ static void updateSizes(lx_battery *b) + b->width = b->length; + } + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean enable_query_tooltip(gpointer p_data) ++{ ++ GtkWidget *widget = p_data; ++ gtk_widget_set_has_tooltip(widget, TRUE); ++ return G_SOURCE_REMOVE; ++} ++ ++static gboolean batt_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_tooltip_text(parent, gtk_widget_get_tooltip_text(widget)); ++ g_timeout_add(2 * G_TIME_SPAN_MILLISECOND, enable_query_tooltip, widget); ++ return TRUE; ++} ++#endif + + static GtkWidget * constructor(LXPanel *panel, config_setting_t *settings) + { +@@ -564,6 +581,10 @@ static GtkWidget * constructor(LXPanel * + /* Start the update loop */ + lx_b->timer = g_timeout_add_seconds( 9, (GSourceFunc) update_timout, (gpointer) lx_b); + ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(lx_b->drawingArea, "query-tooltip", G_CALLBACK(batt_query_tooltip), NULL); ++#endif ++ + RET(p); + } + +diff -Naurp lxpanel-0.10.1.orig/plugins/launch-button.c lxpanel-0.10.1/plugins/launch-button.c +--- lxpanel-0.10.1.orig/plugins/launch-button.c 2019-01-13 22:35:07.000000000 +0100 ++++ lxpanel-0.10.1/plugins/launch-button.c 2022-10-14 11:14:57.009987046 +0200 +@@ -39,6 +39,24 @@ struct _LaunchButton + }; + + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean enable_query_tooltip(gpointer p_data) ++{ ++ GtkWidget *widget = p_data; ++ gtk_widget_set_has_tooltip(widget, TRUE); ++ return G_SOURCE_REMOVE; ++} ++ ++static gboolean launch_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_tooltip_text(parent, gtk_widget_get_tooltip_text(widget)); ++ g_timeout_add(2 * G_TIME_SPAN_MILLISECOND, enable_query_tooltip, widget); ++ return TRUE; ++} ++#endif ++ + static void launch_button_job_finished(FmJob *job, LaunchButton *self) + { + GtkWidget *image; +@@ -179,6 +197,9 @@ LaunchButton *launch_button_new(LXPanel + return NULL; + } + } ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(GTK_WIDGET(self), "query-tooltip", G_CALLBACK(launch_query_tooltip), NULL); ++#endif + return self; + } + +diff -Naurp lxpanel-0.10.1.orig/plugins/monitors/monitors.c lxpanel-0.10.1/plugins/monitors/monitors.c +--- lxpanel-0.10.1.orig/plugins/monitors/monitors.c 2019-01-13 22:37:42.000000000 +0100 ++++ lxpanel-0.10.1/plugins/monitors/monitors.c 2022-10-14 11:14:57.010987046 +0200 +@@ -220,6 +220,24 @@ monitor_set_foreground_color(MonitorsPlu + * End of monitor functions * + ******************************************************************************/ + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean enable_query_tooltip(gpointer p_data) ++{ ++ GtkWidget *widget = p_data; ++ gtk_widget_set_has_tooltip(widget, TRUE); ++ return G_SOURCE_REMOVE; ++} ++ ++static gboolean monitor_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_tooltip_text(parent, gtk_widget_get_tooltip_text(widget)); ++ g_timeout_add(2 * G_TIME_SPAN_MILLISECOND, enable_query_tooltip, widget); ++ return TRUE; ++} ++#endif ++ + /****************************************************************************** + * CPU monitor * + ******************************************************************************/ +@@ -285,6 +303,9 @@ cpu_tooltip_update (Monitor *m) + tooltip_text = g_strdup_printf(_("CPU usage: %.2f%%"), + m->stats[ring_pos] * 100); + gtk_widget_set_tooltip_text(m->da, tooltip_text); ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(m->da, "query-tooltip", G_CALLBACK(monitor_query_tooltip), NULL); ++#endif + g_free(tooltip_text); + } + } +@@ -387,6 +408,9 @@ mem_tooltip_update (Monitor *m) + m->stats[ring_pos] * m->total / 1024, + m->stats[ring_pos] * 100); + gtk_widget_set_tooltip_text(m->da, tooltip_text); ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(m->da, "query-tooltip", G_CALLBACK(monitor_query_tooltip), NULL); ++#endif + g_free(tooltip_text); + } + } +diff -Naurp lxpanel-0.10.1.orig/plugins/netstat/statusicon.c lxpanel-0.10.1/plugins/netstat/statusicon.c +--- lxpanel-0.10.1.orig/plugins/netstat/statusicon.c 2019-01-13 22:35:07.000000000 +0100 ++++ lxpanel-0.10.1/plugins/netstat/statusicon.c 2022-10-14 11:23:56.563275687 +0200 +@@ -26,6 +26,24 @@ + #include "statusicon.h" + #include "misc.h" + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean enable_query_tooltip(gpointer p_data) ++{ ++ GtkWidget *widget = p_data; ++ gtk_widget_set_has_tooltip(widget, TRUE); ++ return G_SOURCE_REMOVE; ++} ++ ++static gboolean statusicon_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_tooltip_text(parent, gtk_widget_get_tooltip_text(widget)); ++ g_timeout_add(2 * G_TIME_SPAN_MILLISECOND, enable_query_tooltip, widget); ++ return TRUE; ++} ++#endif ++ + struct statusicon *create_statusicon(LXPanel *panel, GtkWidget *box, + const char *filename, const char *tooltips, const char* icon_name) + { +@@ -48,6 +66,10 @@ struct statusicon *create_statusicon(LXP + /* tooltip */ + gtk_widget_set_tooltip_text(newicon->main, tooltips); + ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(newicon->main, "query-tooltip", G_CALLBACK(statusicon_query_tooltip), NULL); ++#endif ++ + return newicon; + } + +diff -Naurp lxpanel-0.10.1.orig/plugins/task-button.c lxpanel-0.10.1/plugins/task-button.c +--- lxpanel-0.10.1.orig/plugins/task-button.c 2022-10-12 13:07:42.368701277 +0200 ++++ lxpanel-0.10.1/plugins/task-button.c 2022-10-14 11:17:37.905073119 +0200 +@@ -1135,6 +1135,24 @@ static void task_update_icon(TaskButton + task, NULL); + } + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean enable_query_tooltip(gpointer p_data) ++{ ++ GtkWidget *widget = p_data; ++ gtk_widget_set_has_tooltip(widget, TRUE); ++ return G_SOURCE_REMOVE; ++} ++ ++static gboolean task_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_tooltip_text(parent, gtk_widget_get_tooltip_text(widget)); ++ g_timeout_add(2 * G_TIME_SPAN_MILLISECOND, enable_query_tooltip, widget); ++ return TRUE; ++} ++#endif ++ + /* Draw the label and tooltip on a taskbar button. */ + static void task_draw_label(TaskButton *tb, gboolean bold_style, gboolean force) + { +@@ -1372,6 +1390,11 @@ static gboolean task_button_leave_notify + { + TaskButton *tb = PANEL_TASK_BUTTON(widget); + ++#if GTK_CHECK_VERSION(3, 0, 0) ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_has_tooltip(parent, FALSE); ++#endif ++ + tb->entered_state = FALSE; + task_draw_label(tb, FALSE, FALSE); + if (tb->flags.flat_button) +@@ -1499,6 +1522,9 @@ TaskButton *task_button_new(Window win, + assemble_gui(self); + /* and finally set visibility on it */ + gtk_widget_set_visible(GTK_WIDGET(self), self->n_visible > 0); ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(GTK_WIDGET(self), "query-tooltip", G_CALLBACK(task_query_tooltip), NULL); ++#endif + return self; + } + +diff -Naurp lxpanel-0.10.1.orig/plugins/weather/weatherwidget.c lxpanel-0.10.1/plugins/weather/weatherwidget.c +--- lxpanel-0.10.1.orig/plugins/weather/weatherwidget.c 2019-02-22 22:21:13.000000000 +0100 ++++ lxpanel-0.10.1/plugins/weather/weatherwidget.c 2022-10-14 11:14:57.011987047 +0200 +@@ -452,6 +452,24 @@ gtk_weather_size_allocate(GtkWidget * wi + gtk_widget_size_allocate(GTK_WIDGET(priv->hbox), &box_allocation); + } + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean enable_query_tooltip(gpointer p_data) ++{ ++ GtkWidget *widget = p_data; ++ gtk_widget_set_has_tooltip(widget, TRUE); ++ return G_SOURCE_REMOVE; ++} ++ ++static gboolean weather_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_tooltip_text(parent, gtk_widget_get_tooltip_text(widget)); ++ g_timeout_add(2 * G_TIME_SPAN_MILLISECOND, enable_query_tooltip, widget); ++ return TRUE; ++} ++#endif ++ + /** + * Helper function to update the widget based on internal change. + * +@@ -530,6 +548,10 @@ gtk_weather_render(GtkWeather * weather) + + gtk_widget_set_tooltip_text(GTK_WIDGET(weather), tooltip_text); + ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(weather, "query-tooltip", G_CALLBACK(weather_query_tooltip), NULL); ++#endif ++ + g_free(tooltip_text); + } + +diff -Naurp lxpanel-0.10.1.orig/src/misc.c lxpanel-0.10.1/src/misc.c +--- lxpanel-0.10.1.orig/src/misc.c 2019-01-13 22:35:07.000000000 +0100 ++++ lxpanel-0.10.1/src/misc.c 2022-10-14 11:55:44.518153250 +0200 +@@ -1258,6 +1258,11 @@ static gboolean fb_button_enter(GtkImage + /* Handler for "leave-notify-event" signal on image that has highlighting requested. */ + static gboolean fb_button_leave(GtkImage * widget, GdkEventCrossing * event, gpointer user_data) + { ++#if GTK_CHECK_VERSION(3, 0, 0) ++ GtkWidget *parent = gtk_widget_get_toplevel(GTK_WIDGET(widget)); ++ gtk_widget_set_has_tooltip(parent, FALSE); ++#endif ++ + if (gtk_image_get_storage_type(widget) == GTK_IMAGE_PIXBUF) + { + ImgData * data = (ImgData *) g_object_get_qdata(G_OBJECT(widget), img_data_id); +diff -Naurp lxpanel-0.10.1.orig/src/panel.c lxpanel-0.10.1/src/panel.c +--- lxpanel-0.10.1.orig/src/panel.c 2022-10-12 13:07:42.360701278 +0200 ++++ lxpanel-0.10.1/src/panel.c 2022-10-14 11:14:57.012987047 +0200 +@@ -401,6 +401,14 @@ static gboolean lxpanel_button_press(Gtk + return FALSE; + } + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean lxpanel_enter_notify(GtkWidget* widget, GdkEventCrossing event, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ return FALSE; ++} ++#endif ++ + static void lxpanel_class_init(PanelToplevelClass *klass) + { + GObjectClass *gobject_class = (GObjectClass *)klass; +@@ -430,6 +438,7 @@ static void lxpanel_class_init(PanelTopl + widget_class->button_press_event = lxpanel_button_press; + widget_class->button_release_event = _lxpanel_button_release; + widget_class->motion_notify_event = _lxpanel_motion_notify; ++ widget_class->enter_notify_event = lxpanel_enter_notify; + + signals[ICON_SIZE_CHANGED] = + g_signal_new("icon-size-changed", +diff -Naurp lxpanel-0.10.1.orig/src/plugin.c lxpanel-0.10.1/src/plugin.c +--- lxpanel-0.10.1.orig/src/plugin.c 2021-01-29 23:28:51.000000000 +0100 ++++ lxpanel-0.10.1/src/plugin.c 2022-10-14 11:14:57.012987047 +0200 +@@ -499,6 +499,24 @@ static void on_size_allocate(GtkWidget * + // _queue_panel_calculate_size(p); + } + ++#if GTK_CHECK_VERSION(3, 0, 0) ++static gboolean enable_query_tooltip(gpointer p_data) ++{ ++ GtkWidget *widget = p_data; ++ gtk_widget_set_has_tooltip(widget, TRUE); ++ return G_SOURCE_REMOVE; ++} ++ ++static gboolean plugin_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_tip, GtkTooltip *tooltip, gpointer p_data) ++{ ++ gtk_widget_set_has_tooltip(widget, FALSE); ++ GtkWidget *parent = gtk_widget_get_toplevel(widget); ++ gtk_widget_set_tooltip_text(parent, gtk_widget_get_tooltip_text(widget)); ++ g_timeout_add(2 * G_TIME_SPAN_MILLISECOND, enable_query_tooltip, widget); ++ return TRUE; ++} ++#endif ++ + GtkWidget *lxpanel_add_plugin(LXPanel *p, const char *name, config_setting_t *cfg, gint at) + { + const LXPanelPluginInit *init; +@@ -587,6 +605,11 @@ GtkWidget *lxpanel_add_plugin(LXPanel *p + g_object_set_qdata(G_OBJECT(widget), lxpanel_plugin_qinit, (gpointer)init); + g_object_set_qdata_full(G_OBJECT(widget), lxpanel_plugin_qsize, + g_new0(GdkRectangle, 1), g_free); ++ ++#if GTK_CHECK_VERSION(3, 0, 0) ++ g_signal_connect(widget, "query-tooltip", G_CALLBACK(plugin_query_tooltip), NULL); ++#endif ++ + return widget; + } + diff --git a/desktop/lxde/lxpanel/pspec.xml b/desktop/lxde/lxpanel/pspec.xml index c8769d6dcb..3d4c87fae0 100644 --- a/desktop/lxde/lxpanel/pspec.xml +++ b/desktop/lxde/lxpanel/pspec.xml @@ -37,6 +37,8 @@ Correct_panel_size_under_GTK3.patch Correct_icon_grid_width_under_GTK3.patch + mageia/mga-fix-deiconify.patch + mageia/mga-partial-workaround-for-issue-41.patch lxpanel-0.10.1-volume-plugin-fix-mouse-scrolling.patch @@ -91,7 +93,7 @@ - 2022-04-14 + 2022-11-16 0.10.1 First build. fury