Fix build with LTO
[geeqie.git] / src / logwindow.cc
index 86ac4a1..19ae7e2 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#include "main.h"
 #include "logwindow.h"
 
 #include <algorithm>
+#include <cstring>
 #include <deque>
 #include <string>
 
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gdk/gdk.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include <config.h>
+
+#include "compat.h"
+#include "debug.h"
+#include "intl.h"
 #include "layout.h"
+#include "main-defines.h"
 #include "misc.h"
+#include "options.h"
 #include "ui-misc.h"
 #include "window.h"
 
@@ -59,22 +71,6 @@ static void hide_cb(GtkWidget *, LogWindow *)
 {
 }
 
-static gboolean iter_char_search_cb(gunichar ch, gpointer data)
-{
-       gboolean ret;
-
-       if (ch == GPOINTER_TO_UINT(data))
-               {
-               ret = TRUE;
-               }
-       else
-               {
-               ret = FALSE;
-               }
-
-       return ret;
-}
-
 /**
  * @brief Handle escape and F1 keys
  * @param UNUSED
@@ -83,23 +79,23 @@ static gboolean iter_char_search_cb(gunichar ch, gpointer data)
  * @returns
  *
  * If escape key pressed, hide log window. \n
- * If no text selected, form a selection bounded by space characters or
- * start and end of line. \n
+ * If no text selected, select the entire line. \n
  * If F1 pressed, execute command line program: \n
  * <options->log_window.action> <selected text>
  *
 */
 static gboolean key_pressed(GtkWidget *, GdkEventKey *event, LogWindow *logwin)
 {
+       gchar *cmd_line;
+       gchar *sel_text;
        GtkTextBuffer *buffer;
        GtkTextIter chr_end;
+       GtkTextIter chr_marker;
        GtkTextIter chr_start;
        GtkTextIter cursor_iter;
        GtkTextIter line_end;
        GtkTextIter line_start;
        GtkTextMark *cursor_mark;
-       gchar *cmd_line;
-       gchar *sel_text;
 
        if (event && event->keyval == GDK_KEY_Escape)
                gtk_widget_hide(logwin->window);
@@ -119,21 +115,15 @@ static gboolean key_pressed(GtkWidget *, GdkEventKey *event, LogWindow *logwin)
                                gtk_text_iter_set_line_offset(&line_start, 0);
                                line_end = cursor_iter;
                                gtk_text_iter_forward_to_line_end(&line_end);
-
-                               chr_start = cursor_iter;
-                               gtk_text_iter_backward_find_char(&chr_start, static_cast<GtkTextCharPredicate>(iter_char_search_cb), GUINT_TO_POINTER(' '), &line_start);
-
-                               chr_end = cursor_iter;
-                               gtk_text_iter_forward_find_char(&chr_end, static_cast<GtkTextCharPredicate>(iter_char_search_cb), GUINT_TO_POINTER(' '), &line_end);
-
-                               gtk_text_buffer_select_range(buffer, &chr_start, &chr_end);
+                               chr_marker = line_end;
+                               gtk_text_buffer_select_range(buffer, &line_start, &line_end);
                                }
 
                        if (gtk_text_buffer_get_selection_bounds(gtk_text_view_get_buffer(GTK_TEXT_VIEW(logwin->text)), &chr_start, &chr_end))
                                {
                                sel_text = gtk_text_buffer_get_text( gtk_text_view_get_buffer(GTK_TEXT_VIEW(logwin->text)), &chr_start, &chr_end, FALSE);
 
-                               cmd_line = g_strconcat(options->log_window.action, " ", sel_text, NULL);
+                               cmd_line = g_strconcat(options->log_window.action, " \"", sel_text, "\"", NULL);
 
                                runcmd(cmd_line);
 
@@ -408,9 +398,8 @@ static LogWindow *log_window_create(LayoutWindow *lw)
        gq_gtk_container_add(GTK_WIDGET(window), win_vbox);
        gtk_widget_show(win_vbox);
 
-       gtk_window_resize(GTK_WINDOW(window), lw->options.log_window.w,
-                                                                                       lw->options.log_window.h);
-       gtk_window_move(GTK_WINDOW(window), lw->options.log_window.x, lw->options.log_window.y);
+       gtk_window_resize(GTK_WINDOW(window), lw->options.log_window.width, lw->options.log_window.height);
+       gq_gtk_window_move(GTK_WINDOW(window), lw->options.log_window.x, lw->options.log_window.y);
 
        g_signal_connect(G_OBJECT(window), "delete_event",
                         G_CALLBACK(gtk_widget_hide_on_delete), NULL);
@@ -472,7 +461,7 @@ static LogWindow *log_window_create(LayoutWindow *lw)
        gtk_widget_show_all(logwin->wrap);
 
        logwin->timer_data = gtk_toggle_button_new();
-       label = gtk_label_new("Timer");
+       label = gtk_label_new(_("Timer"));
        gtk_widget_set_tooltip_text(GTK_WIDGET(logwin->timer_data), _("Enable timer data"));
        gq_gtk_container_add(GTK_WIDGET(logwin->timer_data), label) ;
        gq_gtk_box_pack_start(GTK_BOX(hbox),logwin->timer_data, FALSE, FALSE, 0) ;
@@ -498,7 +487,7 @@ static LogWindow *log_window_create(LayoutWindow *lw)
        g_signal_connect(logwin->search_entry_box, "activate", G_CALLBACK(search_activate_event), logwin);
 
        theme = gtk_icon_theme_get_default();
-       pixbuf = gtk_icon_theme_load_icon(theme, "pan-up-symbolic", 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
+       pixbuf = gtk_icon_theme_load_icon(theme, GQ_ICON_PAN_UP, 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
        image = gtk_image_new_from_pixbuf(pixbuf);
        backwards_button = gtk_button_new();
        gtk_button_set_image(GTK_BUTTON(backwards_button), GTK_WIDGET(image));
@@ -508,7 +497,7 @@ static LogWindow *log_window_create(LayoutWindow *lw)
        g_signal_connect(backwards_button, "button_release_event", G_CALLBACK(backwards_keypress_event_cb), logwin);
        g_object_unref(pixbuf);
 
-       pixbuf = gtk_icon_theme_load_icon(theme, "pan-down-symbolic", 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
+       pixbuf = gtk_icon_theme_load_icon(theme, GQ_ICON_PAN_DOWN, 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
        image = gtk_image_new_from_pixbuf(pixbuf);
        forwards_button = gtk_button_new();
        gtk_button_set_image(GTK_BUTTON(forwards_button), GTK_WIDGET(image));
@@ -657,7 +646,8 @@ void log_window_append(const gchar *str, LogType type)
 
        if (options->log_window_lines > 0 && logwindow->lines >= options->log_window_lines)
                {
-               GtkTextIter start, end;
+               GtkTextIter start;
+               GtkTextIter end;
 
                gtk_text_buffer_get_start_iter(buffer, &start);
                end = start;