aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-10 20:59:20 +0100
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-11-10 20:59:20 +0100
commit0ae928ac85ed38fa60f19da615d3c1ce7849397b (patch)
tree806f94058cd80c0d9cf80ce00bc10639dd3a0ad6
parentf120e3e367f01f006bd5ddfd9f1ac018273e75e3 (diff)
downloadsciteco-0ae928ac85ed38fa60f19da615d3c1ce7849397b.tar.gz
support filename highlighting in GtkInfoPopup
-rw-r--r--cmdline.cpp3
-rw-r--r--gtk-info-popup.gob16
2 files changed, 16 insertions, 3 deletions
diff --git a/cmdline.cpp b/cmdline.cpp
index 9f3a438..ea8894e 100644
--- a/cmdline.cpp
+++ b/cmdline.cpp
@@ -234,7 +234,8 @@ filename_complete(const gchar *filename, gchar completed)
? GTK_INFO_POPUP_DIRECTORY
: GTK_INFO_POPUP_FILE;
gtk_info_popup_add_filename(filename_popup,
- type, (gchar *)file->data);
+ type, (gchar *)file->data,
+ FALSE);
}
gtk_widget_show(GTK_WIDGET(filename_popup));
diff --git a/gtk-info-popup.gob b/gtk-info-popup.gob
index 65d13e8..b7dbf44 100644
--- a/gtk-info-popup.gob
+++ b/gtk-info-popup.gob
@@ -91,13 +91,15 @@ class Gtk:Info:Popup from Gtk:Window {
}
public void
- add_filename(self, Gtk:Info:Popup:File:Type type, const gchar *filename)
+ add_filename(self, Gtk:Info:Popup:File:Type type, const gchar *filename,
+ gboolean highlight)
{
GtkWidget *vbox = gtk_bin_get_child(GTK_BIN(self));
const gchar *stock_id;
GtkWidget *hbox;
GtkWidget *image, *label;
+ gchar *markup;
switch (type) {
case GTK_INFO_POPUP_FILE:
@@ -111,7 +113,17 @@ class Gtk:Info:Popup from Gtk:Window {
hbox = gtk_hbox_new(FALSE, 5);
image = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_MENU);
gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
- label = gtk_label_new(filename);
+
+ /*
+ * FIXME: setting Pango attributes directly would be
+ * much more efficient
+ */
+ label = gtk_label_new(NULL);
+ markup = g_markup_printf_escaped("<span weight=\"%s\">%s</span>",
+ highlight ? "bold" : "normal",
+ filename);
+ gtk_label_set_markup(GTK_LABEL(label), markup);
+ g_free(markup);
gtk_misc_set_alignment(GTK_MISC(label), 0., 0.5);
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);