Giter VIP home page Giter VIP logo

Comments (6)

 avatar commented on July 24, 2024 1

The background is related to your gtk theme. For example, the following will set it to black:

style "bg-fill"
{
    bg[NORMAL] = "#000000"
}

class "UniImageView"                            style "bg-fill"

The F key, currently has function set_fitting, so i don't see a bug here...

from viewnior.

eleius avatar eleius commented on July 24, 2024

Although not a bug, it would be nice if the background color could be changed in the preferences (like Irfanview and others do), without having to patch the GTK theme.

from viewnior.

elman22 avatar elman22 commented on July 24, 2024

I agree. Viewnior is my preferred viewer, but I can't change background color to black. I tried editing .gtkrc-2.0, but it didn't work. Could you please add option to change background color?

from viewnior.

 avatar commented on July 24, 2024

@elman22
So probably you are doing something wrong.
However, that's a simple patch, you can try it:

 data/vnr-preferences-dialog.ui | 14 ++++++++++++++
 src/uni-image-view.c           |  7 +++++++
 src/vnr-prefs.c                | 15 +++++++++++++++
 src/vnr-prefs.h                |  1 +
 4 files changed, 37 insertions(+)

diff --git a/data/vnr-preferences-dialog.ui b/data/vnr-preferences-dialog.ui
index 591aa79..cf0251a 100644
--- a/data/vnr-preferences-dialog.ui
+++ b/data/vnr-preferences-dialog.ui
@@ -127,6 +127,20 @@
                     <property name="position">4</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkCheckButton" id="builtin_bg">
+                    <property name="label" translatable="yes">Set built-in background</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">5</property>
+                  </packing>
+                </child>
               </object>
             </child>
             <child type="tab">
diff --git a/src/uni-image-view.c b/src/uni-image-view.c
index 6a6714c..69fb6fe 100755
--- a/src/uni-image-view.c
+++ b/src/uni-image-view.c
@@ -488,6 +488,8 @@ uni_image_view_realize (GtkWidget * widget)
 {
     UniImageView *view = UNI_IMAGE_VIEW (widget);
     gtk_widget_set_realized(widget, TRUE);
+    VnrWindow *vnr_win = VNR_WINDOW(gtk_widget_get_toplevel(widget));
+    g_assert(gtk_widget_is_toplevel(GTK_WIDGET(vnr_win)));
 
     GtkAllocation allocation;
     gtk_widget_get_allocation (widget, &allocation);
@@ -515,6 +517,11 @@ uni_image_view_realize (GtkWidget * widget)
     gdk_window_set_user_data (window, view);
 
     GtkStyle *style = gtk_widget_get_style (widget);
+    if (vnr_win->prefs->builtin_bg) {
+        GdkColor color;
+        gdk_color_parse ("#323232", &color);
+        style->bg[0] = color;
+    }
     style = gtk_style_attach (style, window);
     gtk_widget_set_style (widget, style);
     gtk_style_set_background (style, window, GTK_STATE_NORMAL);
diff --git a/src/vnr-prefs.c b/src/vnr-prefs.c
index a6e1609..1acdb42 100644
--- a/src/vnr-prefs.c
+++ b/src/vnr-prefs.c
@@ -41,6 +41,13 @@ toggle_show_hidden_cb (GtkToggleButton *togglebutton, gpointer user_data)
 }
 
 static void
+toggle_builtin_bg_cb (GtkToggleButton *togglebutton, gpointer user_data)
+{
+    VNR_PREFS(user_data)->builtin_bg = gtk_toggle_button_get_active(togglebutton);
+    vnr_prefs_save(VNR_PREFS(user_data));
+}
+
+static void
 toggle_fit_on_fullscreen_cb (GtkToggleButton *togglebutton, gpointer user_data)
 {
     VNR_PREFS(user_data)->fit_on_fullscreen = gtk_toggle_button_get_active(togglebutton);
@@ -151,6 +158,7 @@ vnr_prefs_set_default(VnrPrefs *prefs)
 {
     prefs->zoom = VNR_PREFS_ZOOM_SMART;
     prefs->show_hidden = FALSE;
+    prefs->builtin_bg = FALSE;
     prefs->fit_on_fullscreen = TRUE;
     prefs->smooth_images = TRUE;
     prefs->confirm_delete = TRUE;
@@ -180,6 +188,7 @@ build_dialog (VnrPrefs *prefs)
 
     GObject *close_button;
     GtkToggleButton *show_hidden;
+    GtkToggleButton *builtin_bg;
     GtkToggleButton *fit_on_fullscreen;
     GtkBox *zoom_mode_box;
     GtkComboBox *zoom_mode;
@@ -218,6 +227,10 @@ build_dialog (VnrPrefs *prefs)
     show_hidden = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "show_hidden"));
     gtk_toggle_button_set_active( show_hidden, prefs->show_hidden );
     g_signal_connect(G_OBJECT(show_hidden), "toggled", G_CALLBACK(toggle_show_hidden_cb), prefs);
+    
+    builtin_bg = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "builtin_bg"));
+    gtk_toggle_button_set_active( builtin_bg, prefs->builtin_bg );
+    g_signal_connect(G_OBJECT(builtin_bg), "toggled", G_CALLBACK(toggle_builtin_bg_cb), prefs);
 
     /* Fit on fullscreen checkbox */
     fit_on_fullscreen = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "fit_on_fullscreen"));
@@ -359,6 +372,7 @@ vnr_prefs_load (VnrPrefs *prefs)
     prefs->zoom = g_key_file_get_integer (conf, "prefs", "zoom-mode", &error);
     prefs->fit_on_fullscreen = g_key_file_get_boolean (conf, "prefs", "fit-on-fullscreen", &error);
     prefs->show_hidden = g_key_file_get_boolean (conf, "prefs", "show-hidden", &error);
+    prefs->builtin_bg = g_key_file_get_boolean (conf, "prefs", "own-background", &error);
     prefs->smooth_images = g_key_file_get_boolean (conf, "prefs", "smooth-images", &error);
     prefs->confirm_delete = g_key_file_get_boolean (conf, "prefs", "confirm-delete", &error);
     prefs->reload_on_save = g_key_file_get_boolean (conf, "prefs", "reload-on-save", &error);
@@ -449,6 +463,7 @@ vnr_prefs_save (VnrPrefs *prefs)
     g_key_file_set_integer (conf, "prefs", "zoom-mode", prefs->zoom);
     g_key_file_set_boolean (conf, "prefs", "fit-on-fullscreen", prefs->fit_on_fullscreen);
     g_key_file_set_boolean (conf, "prefs", "show-hidden", prefs->show_hidden);
+    g_key_file_set_boolean (conf, "prefs", "own-background", prefs->builtin_bg);
     g_key_file_set_boolean (conf, "prefs", "smooth-images", prefs->smooth_images);
     g_key_file_set_boolean (conf, "prefs", "confirm-delete", prefs->confirm_delete);
     g_key_file_set_boolean (conf, "prefs", "reload-on-save", prefs->reload_on_save);
diff --git a/src/vnr-prefs.h b/src/vnr-prefs.h
index a7a1301..db8b187 100644
--- a/src/vnr-prefs.h
+++ b/src/vnr-prefs.h
@@ -90,6 +90,7 @@ struct _VnrPrefs {
     VnrPrefsModify behavior_modify;
     gboolean fit_on_fullscreen;
     gboolean show_hidden;
+    gboolean builtin_bg;
     gboolean smooth_images;
     gboolean confirm_delete;
     gboolean reload_on_save;

from viewnior.

elman22 avatar elman22 commented on July 24, 2024

Thank you very much for the patch. I will try that later. For now I just switched GTK2 theme to dark one. Since I'm on Plasma, it doesn't affect many other applications, so I'm fine with that for now.

from viewnior.

sameepvicky avatar sameepvicky commented on July 24, 2024

Mint-Y-Dark-Aqua GTK2 theme works well, on Plasma, with many apps like Viewnior, Leafpad, etc .

from viewnior.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.