SF.net SVN: geany:[4436] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sun Nov 22 18:25:10 UTC 2009
Revision: 4436
http://geany.svn.sourceforge.net/geany/?rev=4436&view=rev
Author: eht16
Date: 2009-11-22 18:25:09 +0000 (Sun, 22 Nov 2009)
Log Message:
-----------
Use separate tooltips for toolbar menu buttons and their attached drop-down arrows.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/geanymenubuttonaction.c
trunk/src/geanymenubuttonaction.h
trunk/src/toolbar.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-11-19 18:11:56 UTC (rev 4435)
+++ trunk/ChangeLog 2009-11-22 18:25:09 UTC (rev 4436)
@@ -1,3 +1,11 @@
+2009-11-22 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
+
+ * src/toolbar.c, src/geanymenubuttonaction.c,
+ src/geanymenubuttonaction.h:
+ Use separate tooltips for toolbar menu buttons and their attached
+ drop-down arrows.
+
+
2009-11-19 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/geanymenubuttonaction.c:
Modified: trunk/src/geanymenubuttonaction.c
===================================================================
--- trunk/src/geanymenubuttonaction.c 2009-11-19 18:11:56 UTC (rev 4435)
+++ trunk/src/geanymenubuttonaction.c 2009-11-22 18:25:09 UTC (rev 4436)
@@ -39,10 +39,18 @@
struct _GeanyMenubuttonActionPrivate
{
GtkWidget *menu;
+
+ gchar *tooltip_arrow;
};
enum
{
+ PROP_0,
+ PROP_TOOLTIP_ARROW
+};
+
+enum
+{
BUTTON_CLICKED,
LAST_SIGNAL
};
@@ -57,6 +65,7 @@
GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(object);
g_object_unref(priv->menu);
+ g_free(priv->tooltip_arrow);
(* G_OBJECT_CLASS(geany_menu_button_action_parent_class)->finalize)(object);
}
@@ -68,18 +77,75 @@
}
+static void set_arrow_tooltip(GtkMenuToolButton *button, const gchar *tooltip)
+{
+#if GTK_CHECK_VERSION(2, 12, 0)
+ gtk_menu_tool_button_set_arrow_tooltip_text(button, tooltip);
+#else
+ static GtkTooltips *tooltips = NULL;
+
+ if (G_UNLIKELY(tooltips == NULL))
+ tooltips = gtk_tooltips_new();
+
+ gtk_menu_tool_button_set_arrow_tooltip(button, tooltips, tooltip, NULL);
+#endif
+}
+
+
+static void geany_menu_button_action_set_property(GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_TOOLTIP_ARROW:
+ {
+ GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(object);
+ g_free(priv->tooltip_arrow);
+ priv->tooltip_arrow = g_value_dup_string(value);
+ break;
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static GtkWidget *geany_menu_button_action_create_tool_item(GtkAction *action)
+{
+ GtkWidget *toolitem;
+ GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(action);
+
+ toolitem = g_object_new(GTK_TYPE_MENU_TOOL_BUTTON, NULL);
+ set_arrow_tooltip(GTK_MENU_TOOL_BUTTON(toolitem), priv->tooltip_arrow);
+
+ return toolitem;
+}
+
+
static void geany_menu_button_action_class_init(GeanyMenubuttonActionClass *klass)
{
GtkActionClass *action_class = GTK_ACTION_CLASS(klass);
GObjectClass *g_object_class = G_OBJECT_CLASS(klass);
g_object_class->finalize = geany_menu_button_action_finalize;
+ g_object_class->set_property = geany_menu_button_action_set_property;
action_class->activate = delegate_button_activated;
+ action_class->create_tool_item = geany_menu_button_action_create_tool_item;
action_class->toolbar_item_type = GTK_TYPE_MENU_TOOL_BUTTON;
g_type_class_add_private(klass, sizeof(GeanyMenubuttonActionPrivate));
+ g_object_class_install_property(g_object_class,
+ PROP_TOOLTIP_ARROW,
+ g_param_spec_string(
+ "tooltip-arrow",
+ "Arrow tooltip",
+ "A special tooltip for the arrow button",
+ "",
+ G_PARAM_WRITABLE));
+
signals[BUTTON_CLICKED] = g_signal_new("button-clicked",
G_TYPE_FROM_CLASS(klass),
(GSignalFlags) 0,
@@ -93,19 +159,23 @@
static void geany_menu_button_action_init(GeanyMenubuttonAction *action)
{
- /* nothing to do */
+ GeanyMenubuttonActionPrivate *priv = GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(action);
+ priv->tooltip_arrow = NULL;
+ priv->menu = NULL;
}
GtkAction *geany_menu_button_action_new(const gchar *name,
const gchar *label,
const gchar *tooltip,
+ const gchar *tooltip_arrow,
const gchar *stock_id)
{
GtkAction *action = g_object_new(GEANY_MENU_BUTTON_ACTION_TYPE,
"name", name,
"label", label,
"tooltip", tooltip,
+ "tooltip-arrow", tooltip_arrow,
"stock-id", stock_id,
NULL);
Modified: trunk/src/geanymenubuttonaction.h
===================================================================
--- trunk/src/geanymenubuttonaction.h 2009-11-19 18:11:56 UTC (rev 4435)
+++ trunk/src/geanymenubuttonaction.h 2009-11-22 18:25:09 UTC (rev 4436)
@@ -52,6 +52,7 @@
GtkAction* geany_menu_button_action_new (const gchar *name,
const gchar *label,
const gchar *tooltip,
+ const gchar *tooltip_arrow,
const gchar *stock_id);
GtkWidget* geany_menu_button_action_get_menu (GeanyMenubuttonAction *action);
Modified: trunk/src/toolbar.c
===================================================================
--- trunk/src/toolbar.c 2009-11-19 18:11:56 UTC (rev 4435)
+++ trunk/src/toolbar.c 2009-11-22 18:25:09 UTC (rev 4436)
@@ -331,17 +331,27 @@
gtk_action_group_add_actions(group, ui_entries, ui_entries_n, NULL);
/* Create our custom actions */
- action_new = geany_menu_button_action_new("New", NULL, _("Create a new file"), GTK_STOCK_NEW);
+ action_new = geany_menu_button_action_new(
+ "New", NULL,
+ _("Create a new file"),
+ _("Create a new file from a template"),
+ GTK_STOCK_NEW);
g_signal_connect(action_new, "button-clicked", G_CALLBACK(on_toolbutton_new_clicked), NULL);
gtk_action_group_add_action(group, action_new);
action_open = geany_menu_button_action_new(
- "Open", NULL, _("Open an existing file"), GTK_STOCK_OPEN);
+ "Open", NULL,
+ _("Open an existing file"),
+ _("Open a recent file"),
+ GTK_STOCK_OPEN);
g_signal_connect(action_open, "button-clicked", G_CALLBACK(on_toolbutton_open_clicked), NULL);
gtk_action_group_add_action(group, action_open);
action_build = geany_menu_button_action_new(
- "Build", NULL, _("Build the current file"), GEANY_STOCK_BUILD);
+ "Build", NULL,
+ _("Build the current file"),
+ _("Choose more build actions"),
+ GEANY_STOCK_BUILD);
g_signal_connect(action_build, "button-clicked",
G_CALLBACK(build_toolbutton_build_clicked), NULL);
gtk_action_group_add_action(group, action_build);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list