[Xfce4-commits] [apps/ristretto] 01/01: Port to GTK3
noreply at xfce.org
noreply at xfce.org
Sat Jul 27 18:00:15 CEST 2019
This is an automated email from the git hooks/post-receive script.
f 2 4 0 4 p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository apps/ristretto.
commit 793ab19e19e7ed8cbeed7f35d1bbe048330977a4
Author: Igor <f2404 at yandex.ru>
Date: Sat Jul 27 11:58:18 2019 -0400
Port to GTK3
---
configure.ac.in | 22 +--
src/gnome_wallpaper_manager.c | 27 +--
src/icon_bar.c | 340 ++++++++++++++++++++-------------
src/icon_bar.h | 4 +-
src/image_list.c | 2 +-
src/image_viewer.c | 291 ++++++++++++++++------------
src/main.c | 2 +-
src/main_window.c | 430 ++++++++++++++++++++----------------------
src/monitor_chooser.c | 82 ++++----
src/preferences_dialog.c | 59 +++---
src/privacy_dialog.c | 5 +-
src/properties_dialog.c | 227 ++++++----------------
src/settings.c | 20 +-
src/thumbnailer.c | 7 +-
src/xfce_wallpaper_manager.c | 71 +++----
15 files changed, 777 insertions(+), 812 deletions(-)
diff --git a/configure.ac.in b/configure.ac.in
index 4caf2bc..42ae4d4 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -10,10 +10,10 @@ dnl ***************************
dnl *** Version information ***
dnl ***************************
m4_define([ristretto_version_major], [0])
-m4_define([ristretto_version_minor], [8])
-m4_define([ristretto_version_micro], [5])
+m4_define([ristretto_version_minor], [9])
+m4_define([ristretto_version_micro], [0])
m4_define([ristretto_version_build], [r at REVISION@])
-m4_define([ristretto_version_tag], []) # Leave empty for releases
+m4_define([ristretto_version_tag], [git]) # Leave empty for releases
m4_define([ristretto_version], [ristretto_version_major().ristretto_version_minor().ristretto_version_micro()ifelse(ristretto_version_tag(), [], [], [ristretto_version_tag()-ristretto_version_build()])])
dnl *******************************************
@@ -52,16 +52,16 @@ dnl Check for i18n support
XDT_I18N([@LINGUAS@])
XDT_CHECK_PACKAGE([LIBEXIF], [libexif], [0.6.0])
-XDT_CHECK_PACKAGE([GTK], [gtk+-2.0], [2.20.0])
-XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.24.0])
-XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.24.0])
-XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [2.24.0])
-XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.18.0])
-XDT_CHECK_PACKAGE([GIO_UNIX], [gio-unix-2.0], [2.18.0])
+XDT_CHECK_PACKAGE([GTK], [gtk+-3.0], [3.20.0])
+XDT_CHECK_PACKAGE([GLIB], [glib-2.0], [2.42.0])
+XDT_CHECK_PACKAGE([GTHREAD], [gthread-2.0], [2.42.0])
+XDT_CHECK_PACKAGE([GOBJECT], [gobject-2.0], [2.42.0])
+XDT_CHECK_PACKAGE([GIO], [gio-2.0], [2.42.0])
+XDT_CHECK_PACKAGE([GIO_UNIX], [gio-unix-2.0], [2.42.0])
XDT_CHECK_PACKAGE([LIBXFCE4UTIL], [libxfce4util-1.0], [4.10.0])
-XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-1], [4.10.0])
+XDT_CHECK_PACKAGE([LIBXFCE4UI], [libxfce4ui-2], [4.10.0])
-XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.10.0])
+XDT_CHECK_PACKAGE([XFCONF], [libxfconf-0], [4.12.1])
XDT_CHECK_PACKAGE([CAIRO], [cairo], [1.8.0])
diff --git a/src/gnome_wallpaper_manager.c b/src/gnome_wallpaper_manager.c
index e571b8b..b25b04a 100644
--- a/src/gnome_wallpaper_manager.c
+++ b/src/gnome_wallpaper_manager.c
@@ -219,7 +219,7 @@ static void
rstto_gnome_wallpaper_manager_init (GObject *object)
{
RsttoGnomeWallpaperManager *manager = RSTTO_GNOME_WALLPAPER_MANAGER (object);
- GtkWidget *image_prop_table = gtk_table_new (3, 2, FALSE);
+ GtkWidget *image_prop_grid = gtk_grid_new ();
GtkWidget *style_label = gtk_label_new( _("Style:"));
GtkWidget *vbox;
@@ -247,8 +247,6 @@ rstto_gnome_wallpaper_manager_init (GObject *object)
manager->priv->monitor_chooser = rstto_monitor_chooser_new ();
manager->priv->style_combo = gtk_combo_box_text_new ();
- gtk_table_set_row_spacing (GTK_TABLE(image_prop_table), 1, 4);
-
for (i = 0; i < n_monitors; ++i)
{
gdk_screen_get_monitor_geometry (
@@ -268,34 +266,27 @@ rstto_gnome_wallpaper_manager_init (GObject *object)
0);
gtk_box_pack_start (
GTK_BOX (vbox),
- image_prop_table,
+ image_prop_grid,
FALSE,
FALSE,
0);
- gtk_table_attach (
- GTK_TABLE (image_prop_table),
+ gtk_grid_attach (
+ GTK_GRID (image_prop_grid),
style_label,
0,
- 1,
0,
1,
- 0,
- 0,
- 0,
- 0);
- gtk_table_attach (
- GTK_TABLE (image_prop_table),
+ 1);
+ gtk_grid_attach (
+ GTK_GRID (image_prop_grid),
manager->priv->style_combo,
1,
- 2,
0,
1,
- GTK_EXPAND|GTK_FILL,
- 0,
- 0,
- 0);
+ 1);
+ gtk_widget_set_hexpand (manager->priv->style_combo, TRUE);
gtk_combo_box_text_append_text (
GTK_COMBO_BOX_TEXT (manager->priv->style_combo),
_("Auto"));
diff --git a/src/icon_bar.c b/src/icon_bar.c
index 5732061..f05e292 100644
--- a/src/icon_bar.c
+++ b/src/icon_bar.c
@@ -59,6 +59,7 @@ enum
PROP_MODEL,
PROP_ACTIVE,
PROP_SHOW_TEXT,
+ PROP_SCROLLED_WINDOW
};
enum
@@ -70,7 +71,7 @@ enum
static GdkPixbuf *thumbnail_missing = NULL;
static void
-rstto_icon_bar_destroy (GtkObject *object);
+rstto_icon_bar_destroy (GtkWidget *widget);
static void
rstto_icon_bar_finalize (GObject *object);
@@ -103,6 +104,16 @@ static void
rstto_icon_bar_size_request (
GtkWidget *widget,
GtkRequisition *requisition);
+static void
+rstto_icon_bar_get_preferred_width (
+ GtkWidget *widget,
+ gint *minimal_width,
+ gint *natural_width);
+static void
+rstto_icon_bar_get_preferred_height (
+ GtkWidget *widget,
+ gint *minimal_height,
+ gint *natural_height);
static void
rstto_icon_bar_size_allocate (
@@ -110,9 +121,9 @@ rstto_icon_bar_size_allocate (
GtkAllocation *allocation);
static gboolean
-rstto_icon_bar_expose (
- GtkWidget *widget,
- GdkEventExpose *expose);
+rstto_icon_bar_draw (
+ GtkWidget *widget,
+ cairo_t *cr);
static gboolean
rstto_icon_bar_leave (
@@ -168,7 +179,7 @@ static void
rstto_icon_bar_paint_item (
RsttoIconBar *icon_bar,
RsttoIconBarItem *item,
- GdkRectangle *area);
+ cairo_t *cr);
static void
rstto_icon_bar_calculate_item_size (
@@ -253,6 +264,7 @@ struct _RsttoIconBarItem
struct _RsttoIconBarPrivate
{
GdkWindow *bin_window;
+ GtkWidget *s_window;
gint width;
gint height;
@@ -291,46 +303,40 @@ struct _RsttoIconBarPrivate
static guint icon_bar_signals[LAST_SIGNAL];
-#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
-G_DEFINE_TYPE (RsttoIconBar, rstto_icon_bar, GTK_TYPE_CONTAINER)
-#else
-G_DEFINE_TYPE_WITH_CODE (RsttoIconBar, rstto_icon_bar, GTK_TYPE_CONTAINER, G_ADD_PRIVATE (RsttoIconBar))
-#endif
+G_DEFINE_TYPE_WITH_CODE (
+ RsttoIconBar,
+ rstto_icon_bar,
+ GTK_TYPE_CONTAINER,
+ G_ADD_PRIVATE (RsttoIconBar))
static void
rstto_icon_bar_class_init (RsttoIconBarClass *klass)
{
- GtkObjectClass *gtkobject_class;
GtkWidgetClass *gtkwidget_class;
GObjectClass *gobject_class;
-#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
- g_type_class_add_private (klass, sizeof (RsttoIconBarPrivate));
-#endif
-
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = rstto_icon_bar_finalize;
gobject_class->get_property = rstto_icon_bar_get_property;
gobject_class->set_property = rstto_icon_bar_set_property;
- gtkobject_class = GTK_OBJECT_CLASS (klass);
- gtkobject_class->destroy = rstto_icon_bar_destroy;
-
gtkwidget_class = GTK_WIDGET_CLASS (klass);
gtkwidget_class->style_set = rstto_icon_bar_style_set;
gtkwidget_class->realize = rstto_icon_bar_realize;
gtkwidget_class->unrealize = rstto_icon_bar_unrealize;
- gtkwidget_class->size_request = rstto_icon_bar_size_request;
+ gtkwidget_class->get_preferred_width = rstto_icon_bar_get_preferred_width;
+ gtkwidget_class->get_preferred_height = rstto_icon_bar_get_preferred_height;
gtkwidget_class->size_allocate = rstto_icon_bar_size_allocate;
- gtkwidget_class->expose_event = rstto_icon_bar_expose;
+ gtkwidget_class->draw = rstto_icon_bar_draw;
gtkwidget_class->leave_notify_event = rstto_icon_bar_leave;
gtkwidget_class->motion_notify_event = rstto_icon_bar_motion;
- gtkwidget_class->scroll_event = rstto_icon_bar_scroll;
+ //gtkwidget_class->scroll_event = rstto_icon_bar_scroll;
gtkwidget_class->button_press_event = rstto_icon_bar_button_press;
gtkwidget_class->button_release_event = rstto_icon_bar_button_release;
+ gtkwidget_class->destroy = rstto_icon_bar_destroy;
- klass->set_scroll_adjustments = rstto_icon_bar_set_adjustments;
+ //klass->set_scroll_adjustments = rstto_icon_bar_set_adjustments;
/**
* RsttoIconBar:orientation:
@@ -411,68 +417,62 @@ rstto_icon_bar_class_init (RsttoIconBarClass *klass)
TRUE,
G_PARAM_READWRITE));
+ /**
+ * RsttoIconBar:s_window:
+ *
+ * The scrolled window icon bar is placed into.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_SCROLLED_WINDOW,
+ g_param_spec_object ("scrolled-window",
+ _("Scrolled window"),
+ _("Scrolled window icon bar is placed into"),
+ GTK_TYPE_WIDGET,
+ G_PARAM_READWRITE));
+
gtk_widget_class_install_style_property (gtkwidget_class,
g_param_spec_boxed ("active-item-fill-color",
_("Active item fill color"),
_("Active item fill color"),
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READABLE));
gtk_widget_class_install_style_property (gtkwidget_class,
g_param_spec_boxed ("active-item-border-color",
_("Active item border color"),
_("Active item border color"),
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READABLE));
gtk_widget_class_install_style_property (gtkwidget_class,
g_param_spec_boxed ("active-item-text-color",
_("Active item text color"),
_("Active item text color"),
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READABLE));
gtk_widget_class_install_style_property (gtkwidget_class,
g_param_spec_boxed ("cursor-item-fill-color",
_("Cursor item fill color"),
_("Cursor item fill color"),
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READABLE));
gtk_widget_class_install_style_property (gtkwidget_class,
g_param_spec_boxed ("cursor-item-border-color",
_("Cursor item border color"),
_("Cursor item border color"),
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READABLE));
gtk_widget_class_install_style_property (gtkwidget_class,
g_param_spec_boxed ("cursor-item-text-color",
_("Cursor item text color"),
_("Cursor item text color"),
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READABLE));
/**
- * RsttoIconBar::set-scroll-adjustments:
- * @icon_bar : The #RsttoIconBar.
- * @hadjustment : The horizontal adjustment.
- * @vadjustment : The vertical adjustment.
- *
- * Used internally to make the #RsttoIconBar scrollable.
- **/
- gtkwidget_class->set_scroll_adjustments_signal =
- g_signal_new ("set-scroll-adjustments",
- G_TYPE_FROM_CLASS (gobject_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (RsttoIconBarClass, set_scroll_adjustments),
- NULL, NULL,
- _rstto_marshal_VOID__OBJECT_OBJECT,
- G_TYPE_NONE, 2,
- GTK_TYPE_ADJUSTMENT,
- GTK_TYPE_ADJUSTMENT);
-
- /**
* RsttoIconBar::selection-changed:
* @icon_bar : The #RsttoIconBar.
*
@@ -519,7 +519,7 @@ rstto_icon_bar_init (RsttoIconBar *icon_bar)
gtk_widget_set_can_focus (GTK_WIDGET (icon_bar), FALSE);
- rstto_icon_bar_set_adjustments (icon_bar, NULL, NULL);
+ //rstto_icon_bar_set_adjustments (icon_bar, NULL, NULL);
g_signal_connect (
G_OBJECT(icon_bar->priv->settings),
@@ -531,13 +531,13 @@ rstto_icon_bar_init (RsttoIconBar *icon_bar)
static void
-rstto_icon_bar_destroy (GtkObject *object)
+rstto_icon_bar_destroy (GtkWidget *widget)
{
- RsttoIconBar *icon_bar = RSTTO_ICON_BAR (object);
+ RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
rstto_icon_bar_set_model (icon_bar, NULL);
- (*GTK_OBJECT_CLASS (rstto_icon_bar_parent_class)->destroy) (object);
+ (*GTK_WIDGET_CLASS (rstto_icon_bar_parent_class)->destroy) (widget);
}
@@ -587,6 +587,10 @@ rstto_icon_bar_get_property (
g_value_set_boolean (value, rstto_icon_bar_get_show_text (icon_bar));
break;
+ case PROP_SCROLLED_WINDOW:
+ g_value_set_object (value, icon_bar->priv->s_window);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -603,6 +607,7 @@ rstto_icon_bar_set_property (
GParamSpec *pspec)
{
RsttoIconBar *icon_bar = RSTTO_ICON_BAR (object);
+ GtkWidget *hscrollbar, *vscrollbar;
switch (prop_id)
{
@@ -626,6 +631,15 @@ rstto_icon_bar_set_property (
rstto_icon_bar_set_show_text (icon_bar, g_value_get_boolean (value));
break;
+ case PROP_SCROLLED_WINDOW:
+ icon_bar->priv->s_window = g_value_get_object (value);
+ hscrollbar = gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
+ vscrollbar = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
+ g_signal_connect_swapped (icon_bar->priv->s_window, "scroll-event", G_CALLBACK (rstto_icon_bar_scroll), icon_bar);
+ g_signal_connect_swapped (hscrollbar, "scroll-event", G_CALLBACK (rstto_icon_bar_scroll), icon_bar);
+ g_signal_connect_swapped (vscrollbar, "scroll-event", G_CALLBACK (rstto_icon_bar_scroll), icon_bar);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -639,14 +653,18 @@ rstto_icon_bar_style_set (
GtkWidget *widget,
GtkStyle *previous_style)
{
- RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
+ RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
+ GtkStyleContext *context;
+ GdkRGBA bg;
(*GTK_WIDGET_CLASS (rstto_icon_bar_parent_class)->style_set) (widget, previous_style);
if (gtk_widget_get_realized (widget))
{
- gdk_window_set_background (icon_bar->priv->bin_window,
- &(gtk_widget_get_style (widget)->base[gtk_widget_get_state (widget)]));
+ context = gtk_widget_get_style_context (gtk_widget_get_toplevel (widget));
+ gtk_style_context_get (context, gtk_widget_get_state_flags (widget),
+ GTK_STYLE_PROPERTY_BACKGROUND_COLOR, &bg, NULL);
+ gdk_window_set_background_rgba (icon_bar->priv->bin_window, &bg);
}
}
@@ -655,27 +673,29 @@ rstto_icon_bar_style_set (
static void
rstto_icon_bar_realize (GtkWidget *widget)
{
- GdkWindowAttr attributes;
- RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
- gint attributes_mask;
- GtkAllocation allocation;
- GdkWindow *window;
- GtkStyle *style;
+ GdkWindowAttr attributes;
+ RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
+ gint attributes_mask;
+ GtkAllocation allocation;
+ GdkWindow *window;
+ GtkStyleContext *context;
+ GdkRGBA *bg;
gtk_widget_set_realized (widget, TRUE);
gtk_widget_get_allocation (widget, &allocation);
- attributes.window_type = GDK_WINDOW_CHILD;
attributes.x = allocation.x;
attributes.y = allocation.y;
attributes.width = allocation.width;
attributes.height = allocation.height;
attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.window_type = GDK_WINDOW_CHILD;
attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
- attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK;
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+ attributes.event_mask = gtk_widget_get_events (widget)
+ | GDK_EXPOSURE_MASK
+ | GDK_VISIBILITY_NOTIFY_MASK;
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
window = gdk_window_new (gtk_widget_get_parent_window (widget),
&attributes, attributes_mask);
@@ -695,15 +715,17 @@ rstto_icon_bar_realize (GtkWidget *widget)
| GDK_KEY_PRESS_MASK
| GDK_KEY_RELEASE_MASK)
| gtk_widget_get_events (widget);
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
icon_bar->priv->bin_window = gdk_window_new (window, &attributes, attributes_mask);
gdk_window_set_user_data (icon_bar->priv->bin_window, widget);
- style = gtk_style_attach (gtk_widget_get_style (widget), window);
- gtk_widget_set_style (widget, style);
- gdk_window_set_background (window, &(gtk_widget_get_style (widget)->base[gtk_widget_get_state (widget)]));
- gdk_window_set_background (icon_bar->priv->bin_window, &(gtk_widget_get_style (widget)->base[gtk_widget_get_state (widget)]));
+ context = gtk_widget_get_style_context (gtk_widget_get_toplevel (widget));
+ gtk_style_context_get (context, gtk_widget_get_state_flags (widget),
+ GTK_STYLE_PROPERTY_BACKGROUND_COLOR, &bg, NULL);
+ gdk_window_set_background_rgba (window, bg);
+ gdk_window_set_background_rgba (icon_bar->priv->bin_window, bg);
+ gdk_rgba_free (bg);
gdk_window_show (icon_bar->priv->bin_window);
}
@@ -714,9 +736,12 @@ rstto_icon_bar_unrealize (GtkWidget *widget)
{
RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
- gdk_window_set_user_data (icon_bar->priv->bin_window, NULL);
- gdk_window_destroy (icon_bar->priv->bin_window);
- icon_bar->priv->bin_window = NULL;
+ if (icon_bar->priv->bin_window)
+ {
+ gdk_window_set_user_data (icon_bar->priv->bin_window, NULL);
+ gdk_window_destroy (icon_bar->priv->bin_window);
+ icon_bar->priv->bin_window = NULL;
+ }
/* GtkWidget::unrealize destroys children and widget->window */
(*GTK_WIDGET_CLASS (rstto_icon_bar_parent_class)->unrealize) (widget);
@@ -769,6 +794,22 @@ rstto_icon_bar_size_request (
icon_bar->priv->height = requisition->height = icon_bar->priv->item_height;
}
}
+static void
+rstto_icon_bar_get_preferred_width (GtkWidget *widget, gint *minimal_width, gint *natural_width)
+{
+ GtkRequisition requisition;
+
+ rstto_icon_bar_size_request (widget, &requisition);
+ *minimal_width = *natural_width = requisition.width;
+}
+static void
+rstto_icon_bar_get_preferred_height (GtkWidget *widget, gint *minimal_height, gint *natural_height)
+{
+ GtkRequisition requisition;
+
+ rstto_icon_bar_size_request (widget, &requisition);
+ *minimal_height = *natural_height = requisition.height;
+}
@@ -797,6 +838,8 @@ rstto_icon_bar_size_allocate (
MAX (icon_bar->priv->width, allocation->width),
MAX (icon_bar->priv->height, allocation->height));
}
+ icon_bar->priv->hadjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
+ icon_bar->priv->vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
if (icon_bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
{
@@ -809,18 +852,17 @@ rstto_icon_bar_size_allocate (
value = value / gtk_adjustment_get_upper (icon_bar->priv->hadjustment) * MAX (allocation->width, icon_bar->priv->width);
}
- gtk_adjustment_set_page_size (icon_bar->priv->hadjustment, allocation->width);
+// gtk_adjustment_set_page_size (icon_bar->priv->hadjustment, allocation->width);
gtk_adjustment_set_page_increment (icon_bar->priv->hadjustment, allocation->width * 0.9);
gtk_adjustment_set_step_increment (icon_bar->priv->hadjustment, allocation->width * 0.1);
- gtk_adjustment_set_lower (icon_bar->priv->hadjustment, 0);
- gtk_adjustment_set_upper (icon_bar->priv->hadjustment, MAX (allocation->width, icon_bar->priv->width));
+// gtk_adjustment_set_lower (icon_bar->priv->hadjustment, 0);
+// gtk_adjustment_set_upper (icon_bar->priv->hadjustment, MAX (allocation->width, icon_bar->priv->width));
- gtk_adjustment_set_page_size (icon_bar->priv->vadjustment, allocation->height);
+// gtk_adjustment_set_page_size (icon_bar->priv->vadjustment, allocation->height);
gtk_adjustment_set_page_increment (icon_bar->priv->vadjustment, allocation->height * 0.9);
gtk_adjustment_set_step_increment (icon_bar->priv->vadjustment, allocation->height * 0.1);
- gtk_adjustment_set_lower (icon_bar->priv->vadjustment, 0);
- gtk_adjustment_set_upper (icon_bar->priv->vadjustment, MAX (allocation->height, icon_bar->priv->height));
-
+// gtk_adjustment_set_lower (icon_bar->priv->vadjustment, 0);
+// gtk_adjustment_set_upper (icon_bar->priv->vadjustment, MAX (allocation->height, icon_bar->priv->height));
if (icon_bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
{
@@ -889,9 +931,9 @@ rstto_icon_bar_size_allocate (
static gboolean
-rstto_icon_bar_expose (
- GtkWidget *widget,
- GdkEventExpose *expose)
+rstto_icon_bar_draw (
+ GtkWidget *widget,
+ cairo_t *cr)
{
RsttoIconBarItem *item;
GdkRectangle area;
@@ -900,9 +942,6 @@ rstto_icon_bar_expose (
RsttoFile *file;
GtkTreeIter iter;
- if (expose->window != icon_bar->priv->bin_window)
- return FALSE;
-
for (lp = icon_bar->priv->items; lp != NULL; lp = lp->next)
{
item = lp->data;
@@ -921,11 +960,12 @@ rstto_icon_bar_expose (
area.width = icon_bar->priv->item_width;
area.height = icon_bar->priv->item_height;
-
- if (gdk_region_rect_in (expose->region, &area) != GDK_OVERLAP_RECTANGLE_OUT)
+ // TODO: fix me
+ /*if (gdk_region_rect_in (expose->region, &area) != GDK_OVERLAP_RECTANGLE_OUT)
{
- rstto_icon_bar_paint_item (icon_bar, item, &expose->area);
- }
+ rstto_icon_bar_paint_item (icon_bar, item, &expose->area);*/
+ rstto_icon_bar_paint_item (icon_bar, item, cr);
+ /*}
else
{
iter = item->iter;
@@ -934,7 +974,7 @@ rstto_icon_bar_expose (
-1);
rstto_thumbnailer_dequeue_file (icon_bar->priv->thumbnailer, file);
g_object_unref (file);
- }
+ }*/
}
return TRUE;
@@ -1001,7 +1041,7 @@ rstto_icon_bar_scroll (
GtkWidget *widget,
GdkEventScroll *event)
{
- RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
+ RsttoIconBar *icon_bar = RSTTO_ICON_BAR (widget);
GtkAdjustment *adjustment = NULL;
gdouble val = 0;
gdouble step_size = 0;
@@ -1009,12 +1049,12 @@ rstto_icon_bar_scroll (
if (icon_bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
{
- adjustment = icon_bar->priv->vadjustment;
+ adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
step_size = icon_bar->priv->item_height / 2.0;
}
else
{
- adjustment = icon_bar->priv->hadjustment;
+ adjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
step_size = icon_bar->priv->item_width / 2.0;
}
@@ -1025,16 +1065,41 @@ rstto_icon_bar_scroll (
{
case GDK_SCROLL_UP:
case GDK_SCROLL_LEFT:
- val-=step_size;
- if (val<0) val = 0.0;
+ val -= step_size;
+ if (val < 0) val = 0.0;
break;
case GDK_SCROLL_DOWN:
case GDK_SCROLL_RIGHT:
- val+=step_size;
+ val += step_size;
if (val > max_value) val = max_value;
break;
+
+ default: /* GDK_SCROLL_SMOOTH */
+ if (icon_bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
+ {
+ if (event->delta_y < 0) {
+ val -= step_size;
+ if (val < 0) val = 0.0;
+ } else if (event->delta_y > 0) {
+ val += step_size;
+ if (val > max_value) val = max_value;
+ }
+ }
+ else
+ {
+ if (event->delta_y < 0) {
+ val -= step_size;
+ if (val<0) val = 0.0;
+ } else if (event->delta_y > 0) {
+ val += step_size;
+ if (val > max_value) val = max_value;
+ }
+ }
+ break;
}
+
gtk_adjustment_set_value (adjustment, val);
+
return TRUE;
}
@@ -1085,6 +1150,7 @@ rstto_icon_bar_set_adjustments (
GtkAdjustment *hadj,
GtkAdjustment *vadj)
{
+#if 0
gboolean need_adjust = FALSE;
if (hadj != NULL)
@@ -1137,6 +1203,7 @@ rstto_icon_bar_set_adjustments (
if (need_adjust)
cb_rstto_icon_bar_adjustment_value_changed (NULL, icon_bar);
+#endif
}
@@ -1146,6 +1213,7 @@ cb_rstto_icon_bar_adjustment_value_changed (
GtkAdjustment *adjustment,
RsttoIconBar *icon_bar)
{
+#if 0
if (gtk_widget_get_realized (GTK_WIDGET (icon_bar)))
{
/* Set auto_center to false, this should be the default behaviour
@@ -1163,6 +1231,7 @@ cb_rstto_icon_bar_adjustment_value_changed (
gdk_window_process_updates (icon_bar->priv->bin_window, TRUE);
}
+#endif
}
static void
@@ -1227,12 +1296,12 @@ static void
rstto_icon_bar_paint_item (
RsttoIconBar *icon_bar,
RsttoIconBarItem *item,
- GdkRectangle *area)
+ cairo_t *cr)
{
const GdkPixbuf *pixbuf = NULL;
- GdkColor *border_color;
- GdkColor *fill_color;
- cairo_t *cr;
+ GdkRGBA *border_color;
+ GdkRGBA *fill_color;
+ GdkRGBA tmp_color;
gint focus_width;
gint focus_pad;
gint x, y;
@@ -1296,25 +1365,24 @@ rstto_icon_bar_paint_item (
if (fill_color == NULL)
{
- fill_color = gdk_color_copy (&(gtk_widget_get_style (GTK_WIDGET (icon_bar))->base[GTK_STATE_SELECTED]));
- gdk_color_parse ("#c1d2ee", fill_color);
+ gdk_rgba_parse (&tmp_color, "#c1d2ee");
+ fill_color = gdk_rgba_copy (&tmp_color);
}
if (border_color == NULL)
{
- border_color = gdk_color_copy (&(gtk_widget_get_style (GTK_WIDGET (icon_bar))->base[GTK_STATE_SELECTED]));
- gdk_color_parse ("#316ac5", border_color);
+ gdk_rgba_parse (&tmp_color, "#316ac5");
+ border_color = gdk_rgba_copy (&tmp_color);
}
- cr = gdk_cairo_create (icon_bar->priv->bin_window);
- gdk_cairo_rectangle (cr, area);
- cairo_clip (cr);
- cairo_set_source_rgb (cr, fill_color->red/65535., fill_color->green/65535., fill_color->blue/65535.);
+ cairo_save (cr);
+ //cairo_clip (cr);
+ cairo_set_source_rgb (cr, fill_color->red, fill_color->green, fill_color->blue);
cairo_rectangle (cr, x + focus_pad + focus_width, y + focus_pad + focus_width,
icon_bar->priv->item_width - 2 * (focus_width + focus_pad),
icon_bar->priv->item_height - 2 * (focus_width + focus_pad));
cairo_fill (cr);
- cairo_set_source_rgb (cr, border_color->red/65535., border_color->green/65535., border_color->blue/65535.);
+ cairo_set_source_rgb (cr, border_color->red, border_color->green, border_color->blue);
cairo_set_line_width (cr, focus_width);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT);
cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
@@ -1322,10 +1390,10 @@ rstto_icon_bar_paint_item (
icon_bar->priv->item_width - (2 * focus_pad + focus_width),
icon_bar->priv->item_height - (2 * focus_pad + focus_width));
cairo_stroke (cr);
- cairo_destroy (cr);
+ cairo_restore (cr);
- gdk_color_free (border_color);
- gdk_color_free (fill_color);
+ gdk_rgba_free (border_color);
+ gdk_rgba_free (fill_color);
}
else if (icon_bar->priv->cursor_item == item)
{
@@ -1336,25 +1404,24 @@ rstto_icon_bar_paint_item (
if (fill_color == NULL)
{
- fill_color = gdk_color_copy (&(gtk_widget_get_style (GTK_WIDGET (icon_bar))->base[GTK_STATE_SELECTED]));
- gdk_color_parse ("#e0e8f6", fill_color);
+ gdk_rgba_parse (&tmp_color, "#e0e8f6");
+ fill_color = gdk_rgba_copy (&tmp_color);
}
if (border_color == NULL)
{
- border_color = gdk_color_copy (&(gtk_widget_get_style (GTK_WIDGET (icon_bar))->base[GTK_STATE_SELECTED]));
- gdk_color_parse ("#98b4e2", border_color);
+ gdk_rgba_parse (&tmp_color, "#98b4e2");
+ border_color = gdk_rgba_copy (&tmp_color);
}
- cr = gdk_cairo_create (icon_bar->priv->bin_window);
- gdk_cairo_rectangle (cr, area);
- cairo_clip (cr);
- cairo_set_source_rgb (cr, fill_color->red/65535., fill_color->green/65535., fill_color->blue/65535.);
+ cairo_save (cr);
+ //cairo_clip (cr);
+ cairo_set_source_rgb (cr, fill_color->red, fill_color->green, fill_color->blue);
cairo_rectangle (cr, x + focus_pad + focus_width, y + focus_pad + focus_width,
icon_bar->priv->item_width - 2 * (focus_width + focus_pad),
icon_bar->priv->item_height - 2 * (focus_width + focus_pad));
cairo_fill (cr);
- cairo_set_source_rgb (cr, border_color->red/65535., border_color->green/65535., border_color->blue/65535.);
+ cairo_set_source_rgb (cr, border_color->red, border_color->green, border_color->blue);
cairo_set_line_width (cr, focus_width);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_BUTT);
cairo_set_line_join (cr, CAIRO_LINE_JOIN_MITER);
@@ -1362,19 +1429,18 @@ rstto_icon_bar_paint_item (
icon_bar->priv->item_width - (2 * focus_pad + focus_width),
icon_bar->priv->item_height - (2 * focus_pad + focus_width));
cairo_stroke (cr);
- cairo_destroy (cr);
+ cairo_restore (cr);
- gdk_color_free (border_color);
- gdk_color_free (fill_color);
+ gdk_rgba_free (border_color);
+ gdk_rgba_free (fill_color);
}
-
if (NULL != pixbuf)
{
- cr = gdk_cairo_create (icon_bar->priv->bin_window);
+ cairo_save (cr);
gdk_cairo_set_source_pixbuf (cr, pixbuf, px, py);
cairo_paint (cr);
- cairo_destroy (cr);
+ cairo_restore (cr);
}
}
@@ -1628,15 +1694,20 @@ rstto_icon_bar_rows_reordered (
/**
* rstto_icon_bar_new:
+ * @s_window : A #GtkScrolledWindow.
*
* Creates a new #RsttoIconBar without model.
*
* Returns: a newly allocated #RsttoIconBar.
**/
GtkWidget *
-rstto_icon_bar_new (void)
+rstto_icon_bar_new (GtkWidget *s_window)
{
- return g_object_new (RSTTO_TYPE_ICON_BAR, NULL);
+ g_return_val_if_fail (GTK_IS_SCROLLED_WINDOW (s_window), NULL);
+
+ return g_object_new (RSTTO_TYPE_ICON_BAR,
+ "scrolled-window", s_window,
+ NULL);
}
@@ -2065,6 +2136,7 @@ rstto_icon_bar_show_active (RsttoIconBar *icon_bar)
if (icon_bar->priv->orientation == GTK_ORIENTATION_VERTICAL)
{
+ icon_bar->priv->vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
page_size = gtk_adjustment_get_page_size (icon_bar->priv->vadjustment);
value = icon_bar->priv->active_item->index * icon_bar->priv->item_height - ((page_size-icon_bar->priv->item_height)/2);
@@ -2079,6 +2151,7 @@ rstto_icon_bar_show_active (RsttoIconBar *icon_bar)
}
else
{
+ icon_bar->priv->hadjustment = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (icon_bar->priv->s_window));
page_size = gtk_adjustment_get_page_size (icon_bar->priv->hadjustment);
value = icon_bar->priv->active_item->index * icon_bar->priv->item_width - ((page_size-icon_bar->priv->item_width)/2);
@@ -2099,6 +2172,7 @@ rstto_icon_bar_adjustment_changed (
RsttoIconBar *icon_bar,
GtkAdjustment *adjustment)
{
+#if 0
if (TRUE == icon_bar->priv->auto_center)
{
gtk_adjustment_changed (adjustment);
@@ -2108,6 +2182,7 @@ rstto_icon_bar_adjustment_changed (
{
gtk_adjustment_changed (adjustment);
}
+#endif
}
static void
@@ -2115,15 +2190,18 @@ rstto_icon_bar_adjustment_value_changed (
RsttoIconBar *icon_bar,
GtkAdjustment *adjustment)
{
+#if 0
if (TRUE == icon_bar->priv->auto_center)
{
- gtk_adjustment_value_changed (adjustment);
+ //gtk_adjustment_value_changed (adjustment);
icon_bar->priv->auto_center = TRUE;
}
else
{
- gtk_adjustment_value_changed (adjustment);
+ //gtk_adjustment_value_changed (adjustment);
}
+ cb_rstto_icon_bar_adjustment_value_changed (adjustment, icon_bar);
+#endif
}
static void
diff --git a/src/icon_bar.h b/src/icon_bar.h
index 5f846a7..03f0e42 100644
--- a/src/icon_bar.h
+++ b/src/icon_bar.h
@@ -48,9 +48,11 @@ struct _RsttoIconBarClass
GtkContainerClass __parent__;
/* signals */
+#if 0
void (*set_scroll_adjustments) (RsttoIconBar *icon_bar,
GtkAdjustment *hadjustment,
GtkAdjustment *vadjustment);
+#endif
void (*selection_changed) (RsttoIconBar *icon_bar);
/*< private >*/
@@ -76,7 +78,7 @@ struct _RsttoIconBar
GType rstto_icon_bar_get_type (void) G_GNUC_CONST;
-GtkWidget *rstto_icon_bar_new (void);
+GtkWidget *rstto_icon_bar_new (GtkWidget *s_window);
GtkWidget *rstto_icon_bar_new_with_model (GtkTreeModel *model);
GtkTreeModel *rstto_icon_bar_get_model (RsttoIconBar *icon_bar);
diff --git a/src/image_list.c b/src/image_list.c
index e9b943f..6743e71 100644
--- a/src/image_list.c
+++ b/src/image_list.c
@@ -708,7 +708,7 @@ rstto_image_list_set_directory (
loader->file_enum = file_enumerator;
loader->image_list = image_list;
- image_list->priv->directory_loader = g_idle_add ( (GSourceFunc) cb_rstto_read_file, loader );
+ image_list->priv->directory_loader = gdk_threads_add_idle ( (GSourceFunc) cb_rstto_read_file, loader );
}
}
diff --git a/src/image_viewer.c b/src/image_viewer.c
index 7a29c45..f0b2370 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -22,6 +22,7 @@
#include <gio/gio.h>
#include <libxfce4ui/libxfce4ui.h>
#include <libexif/exif-data.h>
+#include <cairo/cairo.h>
#include <math.h>
@@ -52,7 +53,13 @@
enum
{
PROP_0,
- PROP_SHOW_CLOCK
+ PROP_SHOW_CLOCK,
+
+ /* For scrollable interface */
+ PROP_HADJUSTMENT,
+ PROP_VADJUSTMENT,
+ PROP_HSCROLL_POLICY,
+ PROP_VSCROLL_POLICY
};
typedef enum
@@ -69,18 +76,21 @@ struct _RsttoImageViewerPriv
RsttoFile *file;
RsttoSettings *settings;
GdkVisual *visual;
- GdkColormap *colormap;
+ //GdkColormap *colormap;
GtkIconTheme *icon_theme;
GdkPixbuf *missing_icon;
GdkPixbuf *bg_icon;
- GdkColor *bg_color;
- GdkColor *bg_color_fs;
+ GdkRGBA *bg_color;
+ GdkRGBA *bg_color_fs;
gboolean limit_quality;
GError *error;
+ guint hscroll_policy : 1;
+ guint vscroll_policy : 1;
+
RsttoImageViewerTransaction *transaction;
GdkPixbuf *pixbuf;
RsttoImageOrientation orientation;
@@ -167,20 +177,22 @@ paint_background_icon (
static void
-rstto_image_viewer_init (GObject *);
+rstto_image_viewer_init (RsttoImageViewer *viewer);
static void
rstto_image_viewer_class_init(RsttoImageViewerClass *);
static void
-rstto_image_viewer_destroy(GtkObject *object);
+rstto_image_viewer_dispose (GObject *object);
static void
-rstto_image_viewer_size_request(GtkWidget *, GtkRequisition *);
+rstto_image_viewer_get_preferred_width(GtkWidget *, gint *, gint *);
+static void
+rstto_image_viewer_get_preferred_height(GtkWidget *, gint *, gint *);
static void
rstto_image_viewer_size_allocate(GtkWidget *, GtkAllocation *);
static void
rstto_image_viewer_realize(GtkWidget *);
static gboolean
-rstto_image_viewer_expose(GtkWidget *, GdkEventExpose *);
+rstto_image_viewer_draw(GtkWidget *, cairo_t *);
static void
rstto_image_viewer_paint (GtkWidget *widget, cairo_t *);
@@ -278,37 +290,13 @@ rstto_image_viewer_transaction_free (RsttoImageViewerTransaction *tr);
static GtkWidgetClass *parent_class = NULL;
static GdkScreen *default_screen = NULL;
-GType
-rstto_image_viewer_get_type (void)
-{
- static GType rstto_image_viewer_type = 0;
-
- if (!rstto_image_viewer_type)
- {
- static const GTypeInfo rstto_image_viewer_info =
- {
- sizeof (RsttoImageViewerClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) rstto_image_viewer_class_init,
- (GClassFinalizeFunc) NULL,
- NULL,
- sizeof (RsttoImageViewer),
- 0,
- (GInstanceInitFunc) rstto_image_viewer_init,
- NULL
- };
+G_DEFINE_TYPE_WITH_CODE (RsttoImageViewer, rstto_image_viewer, GTK_TYPE_WIDGET,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
- rstto_image_viewer_type = g_type_register_static (GTK_TYPE_WIDGET, "RsttoImageViewer", &rstto_image_viewer_info, 0);
- }
- return rstto_image_viewer_type;
-}
static void
-rstto_image_viewer_init ( GObject *object )
+rstto_image_viewer_init (RsttoImageViewer *viewer)
{
- RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (object);
-
if (default_screen == NULL)
{
default_screen = gdk_screen_get_default();
@@ -320,7 +308,8 @@ rstto_image_viewer_init ( GObject *object )
viewer->priv->image_width = 0;
viewer->priv->image_height = 0;
viewer->priv->visual = gdk_visual_get_system ();
- viewer->priv->colormap = gdk_colormap_new (viewer->priv->visual, TRUE);
+ // TODO: comment out for now
+ //viewer->priv->colormap = gdk_colormap_new (viewer->priv->visual, TRUE);
viewer->priv->icon_theme = gtk_icon_theme_get_default ();
viewer->priv->bg_icon = gtk_icon_theme_load_icon (
@@ -376,13 +365,12 @@ rstto_image_viewer_init ( GObject *object )
GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON1_MOTION_MASK |
GDK_ENTER_NOTIFY_MASK |
- GDK_POINTER_MOTION_MASK);
-
+ GDK_POINTER_MOTION_MASK |
+ GDK_SCROLL_MASK);
gtk_drag_dest_set(GTK_WIDGET(viewer), GTK_DEST_DEFAULT_ALL, NULL, 0,
GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE | GDK_ACTION_PRIVATE);
gtk_drag_dest_add_uri_targets (GTK_WIDGET(viewer));
-
}
/**
@@ -396,18 +384,19 @@ rstto_image_viewer_class_init(RsttoImageViewerClass *viewer_class)
{
GParamSpec *pspec;
GtkWidgetClass *widget_class;
- GtkObjectClass *object_class;
+ GObjectClass *object_class;
widget_class = (GtkWidgetClass*)viewer_class;
- object_class = (GtkObjectClass*)viewer_class;
+ object_class = (GObjectClass*)viewer_class;
parent_class = g_type_class_peek_parent(viewer_class);
viewer_class->set_scroll_adjustments = rstto_image_viewer_set_scroll_adjustments;
- widget_class->expose_event = rstto_image_viewer_expose;
+ widget_class->draw = rstto_image_viewer_draw;
widget_class->realize = rstto_image_viewer_realize;
- widget_class->size_request = rstto_image_viewer_size_request;
+ widget_class->get_preferred_width = rstto_image_viewer_get_preferred_width;
+ widget_class->get_preferred_height = rstto_image_viewer_get_preferred_height;
widget_class->size_allocate = rstto_image_viewer_size_allocate;
widget_class->scroll_event = rstto_scroll_event;
@@ -416,22 +405,10 @@ rstto_image_viewer_class_init(RsttoImageViewerClass *viewer_class)
widget_class->motion_notify_event = rstto_motion_notify_event;
widget_class->popup_menu = rstto_popup_menu;
- object_class->destroy = rstto_image_viewer_destroy;
-
- G_OBJECT_CLASS(object_class)->set_property = rstto_image_viewer_set_property;
- G_OBJECT_CLASS(object_class)->get_property = rstto_image_viewer_get_property;
+ object_class->set_property = rstto_image_viewer_set_property;
+ object_class->get_property = rstto_image_viewer_get_property;
+ object_class->dispose = rstto_image_viewer_dispose;
-
- widget_class->set_scroll_adjustments_signal =
- g_signal_new ("set_scroll_adjustments",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (RsttoImageViewerClass, set_scroll_adjustments),
- NULL, NULL,
- _rstto_marshal_VOID__OBJECT_OBJECT,
- G_TYPE_NONE, 2,
- GTK_TYPE_ADJUSTMENT,
- GTK_TYPE_ADJUSTMENT);
g_signal_new (
"size-ready",
G_TYPE_FROM_CLASS (object_class),
@@ -473,6 +450,24 @@ rstto_image_viewer_class_init(RsttoImageViewerClass *viewer_class)
G_OBJECT_CLASS(object_class),
PROP_SHOW_CLOCK,
pspec);
+
+ /* Scrollable interface properties */
+ g_object_class_override_property (
+ object_class,
+ PROP_HADJUSTMENT,
+ "hadjustment");
+ g_object_class_override_property (
+ object_class,
+ PROP_VADJUSTMENT,
+ "vadjustment");
+ g_object_class_override_property (
+ object_class,
+ PROP_HSCROLL_POLICY,
+ "hscroll-policy");
+ g_object_class_override_property (
+ object_class,
+ PROP_VSCROLL_POLICY,
+ "vscroll-policy");
}
/**
@@ -493,7 +488,6 @@ rstto_image_viewer_realize(GtkWidget *widget)
GtkAllocation allocation;
GdkWindowAttr attributes;
GdkWindow *window;
- GtkStyle *style;
gint attributes_mask;
g_return_if_fail (widget != NULL);
@@ -501,8 +495,8 @@ rstto_image_viewer_realize(GtkWidget *widget)
gtk_widget_set_realized (widget, TRUE);
- g_value_init (&val_bg_color, GDK_TYPE_COLOR);
- g_value_init (&val_bg_color_fs, GDK_TYPE_COLOR);
+ g_value_init (&val_bg_color, GDK_TYPE_RGBA);
+ g_value_init (&val_bg_color_fs, GDK_TYPE_RGBA);
g_value_init (&val_bg_color_override, G_TYPE_BOOLEAN);
g_value_init (&val_limit_quality, G_TYPE_BOOLEAN);
g_value_init (&val_invert_zoom, G_TYPE_BOOLEAN);
@@ -516,17 +510,15 @@ rstto_image_viewer_realize(GtkWidget *widget)
attributes.window_type = GDK_WINDOW_CHILD;
attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK;
attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
+ // TODO: comment out for now
+ //attributes.colormap = gtk_widget_get_colormap (widget);
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+ // TODO: comment out for now
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL /*| GDK_WA_COLORMAP*/;
window = gdk_window_new (gtk_widget_get_parent_window(widget), &attributes, attributes_mask);
gtk_widget_set_window (widget, window);
-
- style = gtk_style_attach (gtk_widget_get_style (widget), window);
- gtk_widget_set_style (widget, style);
gdk_window_set_user_data (window, widget);
-
- gtk_style_set_background (gtk_widget_get_style (widget), window, GTK_STATE_ACTIVE);
+ g_object_ref (window);
g_object_get_property (
G_OBJECT(viewer->priv->settings),
@@ -558,26 +550,30 @@ rstto_image_viewer_realize(GtkWidget *widget)
}
else
{
- viewer->priv->bg_color = &(gtk_widget_get_style (widget)->bg[GTK_STATE_NORMAL]);
+ viewer->priv->bg_color = NULL;
}
viewer->priv->bg_color_fs = g_value_get_boxed (&val_bg_color_fs);
}
/**
- * rstto_image_viewer_size_request:
- * @widget:
- * @requisition:
+ * rstto_image_viewer_get_preferred_width/height:
*
* Request a default size of 300 by 400 pixels
*/
static void
-rstto_image_viewer_size_request(GtkWidget *widget, GtkRequisition *requisition)
+rstto_image_viewer_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
{
- requisition->width = 400;
- requisition->height= 300;
+ *minimal_width = 100;
+ *natural_width = 400;
}
+static void
+rstto_image_viewer_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
+{
+ *minimal_height = 100;
+ *natural_height = 300;
+}
/**
* rstto_image_viewer_size_allocate:
@@ -589,12 +585,13 @@ static void
rstto_image_viewer_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
{
RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (widget);
+ GdkWindow *window = gtk_widget_get_window (widget);
gint border_width = 0;
gtk_widget_set_allocation (widget, allocation);
if (gtk_widget_get_realized (widget))
{
- gdk_window_move_resize (gtk_widget_get_window (widget),
+ gdk_window_move_resize (window,
allocation->x + border_width,
allocation->y + border_width,
allocation->width - border_width * 2,
@@ -609,52 +606,32 @@ rstto_image_viewer_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
}
gdk_window_invalidate_rect (
- gtk_widget_get_window (widget),
+ window,
NULL,
FALSE);
}
}
/**
- * rstto_image_viewer_expose:
+ * rstto_image_viewer_draw:
* @widget:
- * @event:
+ * @cairo_t:
*
*/
static gboolean
-rstto_image_viewer_expose(GtkWidget *widget, GdkEventExpose *event)
+rstto_image_viewer_draw(GtkWidget *widget, cairo_t *ctx)
{
- RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (widget);
-
- cairo_t *ctx;
-
- /* get a cairo_t */
- ctx = gdk_cairo_create (gtk_widget_get_window (widget));
-
- /* set a clip region for the expose event */
- if (FALSE == viewer->priv->auto_scale)
- {
- cairo_rectangle (
- ctx,
- event->area.x, event->area.y,
- event->area.width, event->area.height);
- cairo_clip (ctx);
- }
-
cairo_save (ctx);
rstto_image_viewer_paint (widget, ctx);
cairo_restore (ctx);
- cairo_destroy (ctx);
-
-
return TRUE;
}
static void
-rstto_image_viewer_destroy(GtkObject *object)
+rstto_image_viewer_dispose (GObject *object)
{
RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER(object);
@@ -885,13 +862,16 @@ static void
paint_background (GtkWidget *widget, cairo_t *ctx)
{
RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (widget);
- GdkColor *bg_color = NULL;
+ GdkRGBA *bg_color = NULL;
+ GdkWindow *window = gtk_widget_get_window (widget);
+ GtkAllocation allocation;
+ GtkStyleContext *context = gtk_widget_get_style_context (widget);
/* Determine if we draw the 'default' background-color,
* or the fullscreen-background-color.
*/
if (GDK_WINDOW_STATE_FULLSCREEN & gdk_window_get_state (
- gdk_window_get_toplevel (gtk_widget_get_window (widget))))
+ gdk_window_get_toplevel (window)))
{
bg_color = viewer->priv->bg_color_fs;
}
@@ -903,8 +883,16 @@ paint_background (GtkWidget *widget, cairo_t *ctx)
/* Paint the background-color */
/******************************/
- gdk_cairo_set_source_color (ctx, bg_color);
- cairo_paint (ctx);
+ if ( NULL != bg_color )
+ {
+ gdk_cairo_set_source_rgba (ctx, bg_color);
+ cairo_paint (ctx);
+ }
+ else
+ {
+ gtk_widget_get_allocation (widget, &allocation);
+ gtk_render_background (context, ctx, 0, 0, allocation.width, allocation.height);
+ }
}
static void
@@ -1576,19 +1564,17 @@ static void
rstto_image_viewer_paint (GtkWidget *widget, cairo_t *ctx)
{
RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (widget);
- GtkAllocation allocation;
if (gtk_widget_get_realized (widget))
{
- gtk_widget_get_allocation (widget, &allocation);
correct_adjustments (viewer);
cairo_rectangle (
ctx,
0.0,
0.0,
- (gdouble)allocation.width,
- (gdouble)allocation.height);
+ (gdouble)gtk_widget_get_allocated_width (widget),
+ (gdouble)gtk_widget_get_allocated_height (widget));
cairo_clip (ctx);
cairo_save (ctx);
@@ -2125,7 +2111,7 @@ cb_rstto_image_loader_image_ready (GdkPixbufLoader *loader, RsttoImageViewerTran
if (timeout > 0)
{
viewer->priv->animation_timeout_id =
- g_timeout_add(timeout, (GSourceFunc)cb_rstto_image_viewer_update_pixbuf, viewer);
+ gdk_threads_add_timeout (timeout, (GSourceFunc) cb_rstto_image_viewer_update_pixbuf, viewer);
}
else
{
@@ -2267,7 +2253,7 @@ cb_rstto_image_viewer_update_pixbuf (RsttoImageViewer *viewer)
if (timeout > 0)
{
viewer->priv->animation_timeout_id =
- g_timeout_add(timeout, (GSourceFunc)cb_rstto_image_viewer_update_pixbuf, viewer);
+ gdk_threads_add_timeout(timeout, (GSourceFunc)cb_rstto_image_viewer_update_pixbuf, viewer);
}
gdk_window_invalidate_rect (gtk_widget_get_window (widget), NULL, FALSE);
@@ -2351,6 +2337,7 @@ rstto_scroll_event (GtkWidget *widget, GdkEventScroll *event)
case RSTTO_IMAGE_ORIENT_180:
case RSTTO_IMAGE_ORIENT_FLIP_HORIZONTAL:
case RSTTO_IMAGE_ORIENT_FLIP_VERTICAL:
+
default:
v_scale = (gdouble)(allocation.width) / (gdouble)viewer->priv->image_width;
h_scale = (gdouble)(allocation.height) / (gdouble)viewer->priv->image_height;
@@ -2538,9 +2525,9 @@ rstto_motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
(event->y < (viewer->priv->rendering.y_offset + viewer->priv->rendering.height)) &&
(event->x < (viewer->priv->rendering.x_offset + viewer->priv->rendering.width)))
{
- GdkCursor *cursor = gdk_cursor_new(GDK_UL_ANGLE);
+ GdkCursor *cursor = gdk_cursor_new_for_display(gdk_display_get_default(), GDK_UL_ANGLE);
gdk_window_set_cursor(gtk_widget_get_window (widget), cursor);
- gdk_cursor_unref(cursor);
+ g_object_unref(cursor);
}
else
{
@@ -2580,9 +2567,9 @@ rstto_button_press_event (GtkWidget *widget, GdkEventButton *event)
(event->y < (viewer->priv->rendering.y_offset + viewer->priv->rendering.height)) &&
(event->x < (viewer->priv->rendering.x_offset + viewer->priv->rendering.width)))
{
- GdkCursor *cursor = gdk_cursor_new(GDK_FLEUR);
+ GdkCursor *cursor = gdk_cursor_new_for_display(gdk_display_get_default(), GDK_FLEUR);
gdk_window_set_cursor(gtk_widget_get_window (widget), cursor);
- gdk_cursor_unref(cursor);
+ g_object_unref(cursor);
rstto_image_viewer_set_motion_state (viewer, RSTTO_IMAGE_VIEWER_MOTION_STATE_MOVE);
}
}
@@ -2596,9 +2583,9 @@ rstto_button_press_event (GtkWidget *widget, GdkEventButton *event)
(event->y < (viewer->priv->rendering.y_offset + viewer->priv->rendering.height)) &&
(event->x < (viewer->priv->rendering.x_offset + viewer->priv->rendering.width)))
{
- GdkCursor *cursor = gdk_cursor_new(GDK_UL_ANGLE);
+ GdkCursor *cursor = gdk_cursor_new_for_display(gdk_display_get_default(), GDK_UL_ANGLE);
gdk_window_set_cursor(gtk_widget_get_window (widget), cursor);
- gdk_cursor_unref(cursor);
+ g_object_unref(cursor);
}
/* Set the zoom-state even if not hovering over the
@@ -2616,6 +2603,9 @@ rstto_button_press_event (GtkWidget *widget, GdkEventButton *event)
if (viewer->priv->menu)
{
gtk_widget_show_all(GTK_WIDGET(viewer->priv->menu));
+#if GTK_CHECK_VERSION (3, 22, 0)
+ gtk_menu_popup_at_pointer(viewer->priv->menu, NULL);
+#else
gtk_menu_popup (
viewer->priv->menu,
NULL,
@@ -2624,6 +2614,7 @@ rstto_button_press_event (GtkWidget *widget, GdkEventButton *event)
NULL,
3,
event->time);
+#endif
}
return TRUE;
}
@@ -2835,8 +2826,8 @@ cb_rstto_bgcolor_changed (GObject *settings, GParamSpec *pspec, gpointer user_da
GValue val_bg_color_override = {0, };
GValue val_bg_color_fs = {0, };
- g_value_init (&val_bg_color, GDK_TYPE_COLOR);
- g_value_init (&val_bg_color_fs, GDK_TYPE_COLOR);
+ g_value_init (&val_bg_color, GDK_TYPE_RGBA);
+ g_value_init (&val_bg_color_fs, GDK_TYPE_RGBA);
g_value_init (&val_bg_color_override, G_TYPE_BOOLEAN);
g_object_get_property (
@@ -2858,7 +2849,7 @@ cb_rstto_bgcolor_changed (GObject *settings, GParamSpec *pspec, gpointer user_da
}
else
{
- viewer->priv->bg_color = &(gtk_widget_get_style (widget)->bg[GTK_STATE_NORMAL]);
+ viewer->priv->bg_color = NULL;
}
viewer->priv->bg_color_fs = g_value_get_boxed (&val_bg_color_fs);
@@ -2883,9 +2874,13 @@ rstto_popup_menu (GtkWidget *widget)
if (viewer->priv->menu)
{
gtk_widget_show_all (GTK_WIDGET (viewer->priv->menu));
+#if GTK_CHECK_VERSION (3, 22, 0)
+ gtk_menu_popup_at_pointer (viewer->priv->menu, NULL);
+#else
gtk_menu_popup (viewer->priv->menu,
NULL, NULL, NULL, NULL, 0,
gtk_get_current_event_time());
+#endif
return TRUE;
}
return FALSE;
@@ -2934,6 +2929,48 @@ rstto_image_viewer_set_property (GObject *object, guint property_id, const GValu
case PROP_SHOW_CLOCK:
viewer->priv->props.show_clock = g_value_get_boolean (value);
break;
+ case PROP_HADJUSTMENT:
+ if(viewer->hadjustment)
+ {
+ g_signal_handlers_disconnect_by_func(viewer->hadjustment, viewer->priv->cb_value_changed, viewer);
+ g_object_unref(viewer->hadjustment);
+ }
+ viewer->hadjustment = g_value_get_object (value);
+
+ if(viewer->hadjustment)
+ {
+ gtk_adjustment_set_lower (viewer->hadjustment, 0);
+ gtk_adjustment_set_upper (viewer->hadjustment, 0);
+
+ g_signal_connect(G_OBJECT(viewer->hadjustment), "value-changed", (GCallback)viewer->priv->cb_value_changed, viewer);
+ g_object_ref(viewer->hadjustment);
+ }
+ break;
+ case PROP_VADJUSTMENT:
+ if(viewer->vadjustment)
+ {
+ g_signal_handlers_disconnect_by_func(viewer->vadjustment, viewer->priv->cb_value_changed, viewer);
+ g_object_unref(viewer->vadjustment);
+ }
+ viewer->vadjustment = g_value_get_object (value);
+
+ if(viewer->vadjustment)
+ {
+ gtk_adjustment_set_lower (viewer->vadjustment, 0);
+ gtk_adjustment_set_upper (viewer->vadjustment, 0);
+
+ g_signal_connect(G_OBJECT(viewer->vadjustment), "value-changed", (GCallback)viewer->priv->cb_value_changed, viewer);
+ g_object_ref(viewer->vadjustment);
+ }
+ break;
+ case PROP_HSCROLL_POLICY:
+ viewer->priv->hscroll_policy = g_value_get_enum (value);
+ gtk_widget_queue_resize (GTK_WIDGET (viewer));
+ break;
+ case PROP_VSCROLL_POLICY:
+ viewer->priv->vscroll_policy = g_value_get_enum (value);
+ gtk_widget_queue_resize (GTK_WIDGET (viewer));
+ break;
}
}
@@ -2947,6 +2984,18 @@ rstto_image_viewer_get_property (GObject *object, guint property_id, GValue *val
case PROP_SHOW_CLOCK:
g_value_set_boolean (value, viewer->priv->props.show_clock);
break;
+ case PROP_HADJUSTMENT:
+ g_value_set_object (value, viewer->hadjustment);
+ break;
+ case PROP_VADJUSTMENT:
+ g_value_set_object (value, viewer->vadjustment);
+ break;
+ case PROP_HSCROLL_POLICY:
+ g_value_set_enum (value, viewer->priv->hscroll_policy);
+ break;
+ case PROP_VSCROLL_POLICY:
+ g_value_set_enum (value, viewer->priv->vscroll_policy);
+ break;
}
}
@@ -2969,7 +3018,7 @@ rstto_image_viewer_set_show_clock (RsttoImageViewer *viewer, gboolean value)
viewer->priv->props.show_clock = value;
if (viewer->priv->props.show_clock)
{
- viewer->priv->refresh_timeout_id = g_timeout_add (
+ viewer->priv->refresh_timeout_id = gdk_threads_add_timeout (
15000,
(GSourceFunc)cb_rstto_image_viewer_refresh, viewer);
}
diff --git a/src/main.c b/src/main.c
index c081add..f2a5b75 100644
--- a/src/main.c
+++ b/src/main.c
@@ -143,7 +143,7 @@ main(int argc, char **argv)
rof.iter = 1;
rof.window = window;
- g_idle_add ((GSourceFunc )cb_rstto_open_files, &rof);
+ gdk_threads_add_idle ((GSourceFunc )cb_rstto_open_files, &rof);
if (TRUE == rstto_settings_get_boolean_property (
settings,
diff --git a/src/main_window.c b/src/main_window.c
index 2c2a0b8..adb1117 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -100,7 +100,7 @@ struct _RsttoMainWindowPriv
GtkWidget *position_menu;
GtkWidget *image_viewer;
GtkWidget *p_viewer_s_window;
- GtkWidget *table;
+ GtkWidget *grid;
GtkWidget *t_bar_s_window;
GtkWidget *thumbnailbar;
GtkWidget *statusbar;
@@ -334,6 +334,31 @@ cb_rstto_main_window_image_viewer_scroll_event (
gpointer user_data);
static void
+rstto_main_activate_file_menu_actions (
+ RsttoMainWindow *window,
+ gboolean activate);
+
+static void
+rstto_main_activate_go_menu_actions (
+ RsttoMainWindow *window,
+ gboolean activate);
+
+static void
+rstto_main_activate_view_menu_actions (
+ RsttoMainWindow *window,
+ gboolean activate);
+
+static void
+rstto_main_activate_popup_menu_actions (
+ RsttoMainWindow *window,
+ gboolean activate);
+
+static void
+rstto_main_activate_toolbar_actions (
+ RsttoMainWindow *window,
+ gboolean activate);
+
+static void
rstto_main_window_update_buttons (
RsttoMainWindow *window);
@@ -793,7 +818,7 @@ rstto_main_window_init (RsttoMainWindow *window)
{
GtkAccelGroup *accel_group;
GtkWidget *separator;
- GtkWidget *main_vbox = gtk_vbox_new (FALSE, 0);
+ GtkWidget *main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
GtkRecentFilter *recent_filter;
guint window_width, window_height;
gchar *desktop_type = NULL;
@@ -948,7 +973,7 @@ rstto_main_window_init (RsttoMainWindow *window)
gtk_action_group_add_radio_actions (window->priv->action_group, radio_action_size_entries, G_N_ELEMENTS (radio_action_size_entries), thumbnail_size, G_CALLBACK (cb_rstto_main_window_thumbnail_size_changed), GTK_WIDGET (window));
- gtk_ui_manager_add_ui_from_string (window->priv->ui_manager,main_window_ui, main_window_ui_length, NULL);
+ gtk_ui_manager_add_ui_from_string (window->priv->ui_manager, main_window_ui, main_window_ui_length, NULL);
window->priv->menubar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu");
window->priv->toolbar = gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar");
window->priv->image_viewer_menu = gtk_ui_manager_get_widget (window->priv->ui_manager, "/image-viewer-menu");
@@ -996,19 +1021,21 @@ rstto_main_window_init (RsttoMainWindow *window)
RSTTO_IMAGE_VIEWER(window->priv->image_viewer),
GTK_MENU(window->priv->image_viewer_menu));
- window->priv->thumbnailbar = rstto_icon_bar_new();
- rstto_icon_bar_set_show_text (RSTTO_ICON_BAR (window->priv->thumbnailbar), FALSE);
-
- g_signal_connect(G_OBJECT(window->priv->thumbnailbar), "selection-changed", G_CALLBACK(cb_icon_bar_selection_changed), window);
-
window->priv->t_bar_s_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
+ gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), FALSE);
+
+ window->priv->thumbnailbar = rstto_icon_bar_new (window->priv->t_bar_s_window);
gtk_container_add (GTK_CONTAINER (window->priv->t_bar_s_window), window->priv->thumbnailbar);
+ rstto_icon_bar_set_show_text (RSTTO_ICON_BAR (window->priv->thumbnailbar), FALSE);
rstto_icon_bar_set_file_column (RSTTO_ICON_BAR (window->priv->thumbnailbar), 0);
rstto_icon_bar_set_item_width (RSTTO_ICON_BAR (window->priv->thumbnailbar), 96);
- window->priv->table = gtk_table_new (5, 5, FALSE);
+ g_signal_connect (G_OBJECT (window->priv->thumbnailbar), "selection-changed",
+ G_CALLBACK (cb_icon_bar_selection_changed), window);
+
+ window->priv->grid = gtk_grid_new ();
window->priv->statusbar = gtk_statusbar_new();
window->priv->statusbar_context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR(window->priv->statusbar), "image-data");
@@ -1021,11 +1048,13 @@ rstto_main_window_init (RsttoMainWindow *window)
gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->menubar, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->toolbar, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->warning, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->table, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->grid, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(main_vbox), window->priv->statusbar, FALSE, FALSE, 0);
- gtk_table_attach (GTK_TABLE (window->priv->table), window->priv->t_bar_s_window, 1, 2, 0, 5, GTK_FILL|GTK_SHRINK, GTK_FILL|GTK_EXPAND, 0, 0);
- gtk_table_attach (GTK_TABLE (window->priv->table), window->priv->p_viewer_s_window, 2, 3, 2, 3, GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL, 0, 0);
+ gtk_grid_attach (GTK_GRID (window->priv->grid), window->priv->t_bar_s_window, 1, 0, 1, 5);
+ gtk_grid_attach (GTK_GRID (window->priv->grid), window->priv->p_viewer_s_window, 2, 2, 1, 1);
+ gtk_widget_set_hexpand (window->priv->p_viewer_s_window, TRUE);
+ gtk_widget_set_vexpand (window->priv->p_viewer_s_window, TRUE);
gtk_widget_set_no_show_all (window->priv->toolbar, TRUE);
gtk_widget_set_no_show_all (window->priv->warning, TRUE);
@@ -1369,8 +1398,8 @@ rstto_main_window_image_list_iter_changed (RsttoMainWindow *window)
GtkWidget *open_with_menu = gtk_menu_new();
GtkWidget *open_with_window_menu = gtk_menu_new();
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/open-with-menu")), open_with_menu);
- gtk_menu_item_set_submenu (GTK_MENU_ITEM (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/edit-menu/open-with-menu")), open_with_window_menu);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (gtk_ui_manager_get_widget (window->priv->ui_manager, "/image-viewer-menu/open-with-menu")), open_with_menu);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/edit-menu/open-with-menu")), open_with_window_menu);
if (window->priv->image_list)
{
@@ -1588,11 +1617,11 @@ rstto_main_window_update_statusbar (RsttoMainWindow *window)
{
gchar *size_string = g_format_size (rstto_file_get_size (cur_file));
tmp_status = g_strdup_printf ("%s\t%d x %d\t%s\t%.1f%%", status,
- rstto_image_viewer_get_width(viewer),
- rstto_image_viewer_get_height(viewer),
- size_string,
- (100 * rstto_image_viewer_get_scale(viewer)));
-
+ rstto_image_viewer_get_width(viewer),
+ rstto_image_viewer_get_height(viewer),
+ size_string,
+ (100 * rstto_image_viewer_get_scale(viewer)));
+
g_free (size_string);
g_free (status);
status = tmp_status;
@@ -1627,6 +1656,108 @@ rstto_main_window_update_statusbar (RsttoMainWindow *window)
}
+static void
+rstto_main_activate_file_menu_actions (RsttoMainWindow *window, gboolean activate)
+{
+ GtkWidget *widget;
+ guint i;
+ const gchar *actions[] = {
+ "/main-menu/file-menu/save-copy",
+ //"/main-menu/file-menu/print",
+ "/main-menu/file-menu/properties",
+ "/main-menu/file-menu/close",
+ "/main-menu/edit-menu/delete"
+ };
+
+ for (i = 0; i < G_N_ELEMENTS (actions); ++i)
+ {
+ widget = gtk_ui_manager_get_widget (window->priv->ui_manager, actions[i]);
+ gtk_widget_set_sensitive (widget, activate);
+ }
+}
+
+static void
+rstto_main_activate_go_menu_actions (RsttoMainWindow *window, gboolean activate)
+{
+ GtkWidget *widget;
+ guint i;
+ const gchar *actions[] = {
+ "/main-menu/go-menu/forward",
+ "/main-menu/go-menu/back",
+ "/main-menu/go-menu/first",
+ "/main-menu/go-menu/last"
+ };
+
+ for (i = 0; i < G_N_ELEMENTS (actions); ++i)
+ {
+ widget = gtk_ui_manager_get_widget (window->priv->ui_manager, actions[i]);
+ gtk_widget_set_sensitive (widget, activate);
+ }
+}
+
+static void
+rstto_main_activate_view_menu_actions (RsttoMainWindow *window, gboolean activate)
+{
+ GtkWidget *widget;
+ guint i;
+ const gchar *actions[] = {
+ "/main-menu/view-menu/set-as-wallpaper",
+ "/main-menu/view-menu/zoom-menu",
+ "/main-menu/view-menu/rotation-menu"
+ };
+
+ widget = gtk_ui_manager_get_widget (window->priv->ui_manager, actions[0]);
+ gtk_widget_set_sensitive (widget, (activate && window->priv->wallpaper_manager) ? TRUE : FALSE);
+ for (i = 1; i < G_N_ELEMENTS (actions); ++i)
+ {
+ widget = gtk_ui_manager_get_widget (window->priv->ui_manager, actions[i]);
+ gtk_widget_set_sensitive (widget, activate);
+ }
+}
+
+static void
+rstto_main_activate_popup_menu_actions (RsttoMainWindow *window, gboolean activate)
+{
+ GtkWidget *widget;
+ guint i;
+ const gchar *actions[] = {
+ "/image-viewer-menu/close",
+ "/image-viewer-menu/open-with-menu",
+ "/image-viewer-menu/zoom-in",
+ "/image-viewer-menu/zoom-out",
+ "/image-viewer-menu/zoom-100",
+ "/image-viewer-menu/zoom-fit"
+ };
+
+ for (i = 0; i < G_N_ELEMENTS (actions); ++i)
+ {
+ widget = gtk_ui_manager_get_widget (window->priv->ui_manager, actions[i]);
+ gtk_widget_set_sensitive (widget, activate);
+ }
+}
+
+static void
+rstto_main_activate_toolbar_actions (RsttoMainWindow *window, gboolean activate)
+{
+ GtkWidget *widget;
+ guint i;
+ const gchar *actions[] = {
+ "/main-toolbar/save-copy",
+ "/main-toolbar/edit",
+ "/main-toolbar/delete",
+ "/main-toolbar/zoom-in",
+ "/main-toolbar/zoom-out",
+ "/main-toolbar/zoom-fit",
+ "/main-toolbar/zoom-100"
+ };
+
+ for (i = 0; i < G_N_ELEMENTS (actions); ++i)
+ {
+ widget = gtk_ui_manager_get_widget (window->priv->ui_manager, actions[i]);
+ gtk_widget_set_sensitive (widget, activate);
+ }
+}
+
/**
* rstto_main_window_update_buttons:
* @window:
@@ -1639,7 +1770,7 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
g_return_if_fail (window->priv->image_list != NULL);
switch (rstto_image_list_get_n_images (window->priv->image_list))
{
- case 0:
+ case 0:
if ( gtk_widget_get_visible (GTK_WIDGET (window)) )
{
if ( 0 != (gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window))) & GDK_WINDOW_STATE_FULLSCREEN ))
@@ -1647,25 +1778,16 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
gtk_widget_show (window->priv->toolbar);
}
}
+
gtk_widget_hide (window->priv->t_bar_s_window);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/save-copy"), FALSE);
- /*
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/print"), FALSE);
- */
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/properties"), FALSE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/close"), FALSE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/edit-menu/delete"), FALSE);
-
- /* Go Menu */
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/forward"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/back"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/first"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/last"), FALSE);
+ rstto_main_activate_file_menu_actions (window, FALSE);
+ rstto_main_activate_go_menu_actions (window, FALSE);
gtk_action_set_sensitive (window->priv->play_action, FALSE);
gtk_action_set_sensitive (window->priv->pause_action, FALSE);
+ gtk_widget_set_sensitive (window->priv->forward, FALSE);
+ gtk_widget_set_sensitive (window->priv->back, FALSE);
-
/* Stop the slideshow if no image is opened */
if (window->priv->playing == TRUE)
{
@@ -1691,33 +1813,12 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
window->priv->playing = FALSE;
}
-
- /* View Menu */
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/zoom-menu"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/rotation-menu"), FALSE);
-
- /* Toolbar */
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/save-copy"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/edit"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/delete"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/forward"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/back"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-in"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-out"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-fit"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-100"), FALSE);
-
- /* Image Viewer popup-menu */
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/close"), FALSE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/open-with-menu"), FALSE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-in"), FALSE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-out"), FALSE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-100"), FALSE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-fit"), FALSE);
+ rstto_main_activate_view_menu_actions (window, FALSE);
+ rstto_main_activate_popup_menu_actions (window, FALSE);
+ rstto_main_activate_toolbar_actions (window, FALSE);
break;
- case 1:
+ case 1:
if (rstto_settings_get_boolean_property (window->priv->settings_manager, "show-thumbnailbar"))
{
if ( 0 == (gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window))) & GDK_WINDOW_STATE_FULLSCREEN ))
@@ -1743,22 +1844,14 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
{
gtk_widget_hide (window->priv->toolbar);
}
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/save-copy"), TRUE);
- /*
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/print"), TRUE);
- */
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/properties"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/close"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/edit-menu/delete"), TRUE);
-
- /* Go Menu */
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/forward"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/back"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/first"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/last"), FALSE);
+
+ rstto_main_activate_file_menu_actions (window, TRUE);
+ rstto_main_activate_go_menu_actions (window, FALSE);
gtk_action_set_sensitive (window->priv->play_action, FALSE);
gtk_action_set_sensitive (window->priv->pause_action, FALSE);
+ gtk_widget_set_sensitive (window->priv->forward, FALSE);
+ gtk_widget_set_sensitive (window->priv->back, FALSE);
/* Stop the slideshow if only one image is opened */
if (window->priv->playing == TRUE)
@@ -1790,40 +1883,12 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
window->priv->playing = FALSE;
}
-
- /* View Menu */
- if (window->priv->wallpaper_manager)
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), TRUE);
- }
- else
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), FALSE);
- }
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/zoom-menu"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/rotation-menu"), TRUE);
-
- /* Toolbar */
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/save-copy"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/edit"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/delete"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/forward"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/back"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-in"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-out"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-fit"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-100"), TRUE);
-
- /* Image Viewer popup-menu */
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/close"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/open-with-menu"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-in"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-out"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-100"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-fit"), TRUE);
+ rstto_main_activate_view_menu_actions (window, TRUE);
+ rstto_main_activate_popup_menu_actions (window, TRUE);
+ rstto_main_activate_toolbar_actions (window, TRUE);
break;
- default:
+ default:
if (rstto_settings_get_boolean_property (window->priv->settings_manager, "show-thumbnailbar"))
{
if ( 0 == (gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window))) & GDK_WINDOW_STATE_FULLSCREEN ))
@@ -1850,67 +1915,17 @@ rstto_main_window_update_buttons (RsttoMainWindow *window)
gtk_widget_hide (window->priv->toolbar);
}
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/save-copy"), TRUE);
-
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/properties"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/file-menu/close"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/edit-menu/delete"), TRUE);
-
- /* Go Menu */
- if (rstto_image_list_iter_has_next (window->priv->iter))
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/forward"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/forward"), TRUE);
- }
- else
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/forward"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/forward"), FALSE);
- }
- if (rstto_image_list_iter_has_previous (window->priv->iter))
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/back"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/back"), TRUE);
- }
- else
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/back"), FALSE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/back"), FALSE);
- }
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/first"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget ( window->priv->ui_manager, "/main-menu/go-menu/last"), TRUE);
+ rstto_main_activate_file_menu_actions (window, TRUE);
+ rstto_main_activate_go_menu_actions (window, TRUE);
gtk_action_set_sensitive (window->priv->play_action, TRUE);
gtk_action_set_sensitive (window->priv->pause_action, TRUE);
-
+ gtk_widget_set_sensitive (window->priv->forward, rstto_image_list_iter_has_next (window->priv->iter) ? TRUE : FALSE);
+ gtk_widget_set_sensitive (window->priv->back, rstto_image_list_iter_has_previous (window->priv->iter) ? TRUE : FALSE);
- /* View Menu */
- if (window->priv->wallpaper_manager)
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), TRUE);
- }
- else
- {
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/set-as-wallpaper"), FALSE);
- }
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/zoom-menu"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-menu/view-menu/rotation-menu"), TRUE);
-
- /* Toolbar */
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/save-copy"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/edit"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/delete"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-in"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-out"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-fit"), TRUE);
- gtk_widget_set_sensitive (gtk_ui_manager_get_widget (window->priv->ui_manager, "/main-toolbar/zoom-100"), TRUE);
-
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/close"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/open-with-menu"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-in"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-out"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-100"), TRUE);
- gtk_widget_set_sensitive ( gtk_ui_manager_get_widget ( window->priv->ui_manager, "/image-viewer-menu/zoom-fit"), TRUE);
+ rstto_main_activate_view_menu_actions (window, TRUE);
+ rstto_main_activate_popup_menu_actions (window, TRUE);
+ rstto_main_activate_toolbar_actions (window, TRUE);
break;
}
@@ -2033,38 +2048,17 @@ rstto_main_window_set_navigationbar_position (RsttoMainWindow *window, guint ori
g_object_ref (window->priv->t_bar_s_window);
gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (window->priv->t_bar_s_window)), window->priv->t_bar_s_window);
- gtk_table_attach (
- GTK_TABLE (window->priv->table),
- window->priv->t_bar_s_window,
- 1,
- 2,
- 0,
- 5,
- GTK_SHRINK|GTK_FILL,
- GTK_EXPAND|GTK_FILL,
- 0,
- 0);
+ gtk_grid_attach (GTK_GRID (window->priv->grid), window->priv->t_bar_s_window, 1, 0, 1, 5);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_CORNER_BOTTOM_RIGHT);
-
rstto_icon_bar_set_orientation (RSTTO_ICON_BAR(window->priv->thumbnailbar), GTK_ORIENTATION_VERTICAL);
break;
case 1: /* Right */
g_object_ref (window->priv->t_bar_s_window);
gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (window->priv->t_bar_s_window)), window->priv->t_bar_s_window);
- gtk_table_attach (
- GTK_TABLE (window->priv->table),
- window->priv->t_bar_s_window,
- 3,
- 4,
- 0,
- 5,
- GTK_SHRINK|GTK_FILL,
- GTK_EXPAND|GTK_FILL,
- 0,
- 0);
+ gtk_grid_attach (GTK_GRID (window->priv->grid), window->priv->t_bar_s_window, 3, 0, 1, 5);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_CORNER_BOTTOM_LEFT);
@@ -2074,17 +2068,7 @@ rstto_main_window_set_navigationbar_position (RsttoMainWindow *window, guint ori
g_object_ref (window->priv->t_bar_s_window);
gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (window->priv->t_bar_s_window)), window->priv->t_bar_s_window);
- gtk_table_attach (
- GTK_TABLE (window->priv->table),
- window->priv->t_bar_s_window,
- 0,
- 5,
- 1,
- 2,
- GTK_EXPAND|GTK_FILL,
- GTK_SHRINK|GTK_FILL,
- 0,
- 0);
+ gtk_grid_attach (GTK_GRID (window->priv->grid), window->priv->t_bar_s_window, 0, 1, 5, 1);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_CORNER_BOTTOM_RIGHT);
@@ -2094,21 +2078,10 @@ rstto_main_window_set_navigationbar_position (RsttoMainWindow *window, guint ori
g_object_ref (window->priv->t_bar_s_window);
gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (window->priv->t_bar_s_window)), window->priv->t_bar_s_window);
- gtk_table_attach (
- GTK_TABLE (window->priv->table),
- window->priv->t_bar_s_window,
- 0,
- 5,
- 3,
- 4,
- GTK_EXPAND|GTK_FILL,
- GTK_SHRINK|GTK_FILL,
- 0,
- 0);
+ gtk_grid_attach (GTK_GRID (window->priv->grid), window->priv->t_bar_s_window, 0, 3, 5, 1);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_POLICY_ALWAYS, GTK_POLICY_NEVER);
gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (window->priv->t_bar_s_window), GTK_CORNER_TOP_RIGHT);
-
rstto_icon_bar_set_orientation (RSTTO_ICON_BAR(window->priv->thumbnailbar), GTK_ORIENTATION_HORIZONTAL);
break;
default:
@@ -2130,8 +2103,12 @@ cb_rstto_main_window_navigationtoolbar_button_press_event (GtkWidget *widget, Gd
if (event->button == 3 && event->type == GDK_BUTTON_PRESS)
{
+#if GTK_CHECK_VERSION (3, 22, 0)
+ gtk_menu_popup_at_pointer (GTK_MENU (window->priv->position_menu), NULL);
+#else
gtk_menu_popup (GTK_MENU (window->priv->position_menu), NULL, NULL, NULL, NULL,
event->button, event->time);
+#endif
}
return FALSE;
@@ -2236,9 +2213,11 @@ cb_rstto_main_window_set_as_wallpaper (GtkWidget *widget, RsttoMainWindow *windo
_("Configure which system is currently managing your desktop.\n"
"This setting determines the method <i>Ristretto</i> will use\n"
"to configure the desktop wallpaper."));
- gtk_misc_set_alignment(
- GTK_MISC(behaviour_desktop_lbl),
- 0,
+ gtk_label_set_xalign (
+ GTK_LABEL (behaviour_desktop_lbl),
+ 0.0);
+ gtk_label_set_yalign (
+ GTK_LABEL (behaviour_desktop_lbl),
0.5);
gtk_box_pack_start (
GTK_BOX (content_area),
@@ -2725,24 +2704,25 @@ cb_rstto_main_window_about (GtkWidget *widget, RsttoMainWindow *window)
GtkWidget *about_dialog = gtk_about_dialog_new();
- gtk_about_dialog_set_version((GtkAboutDialog *)about_dialog, PACKAGE_VERSION);
+ gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about_dialog), PACKAGE_VERSION);
- gtk_about_dialog_set_comments((GtkAboutDialog *)about_dialog,
+ gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about_dialog),
_("Ristretto is an image viewer for the Xfce desktop environment."));
- gtk_about_dialog_set_website((GtkAboutDialog *)about_dialog,
+ gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(about_dialog),
"https://docs.xfce.org/apps/ristretto/start");
- gtk_about_dialog_set_logo_icon_name((GtkAboutDialog *)about_dialog,
+ gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(about_dialog),
"ristretto");
- gtk_about_dialog_set_authors((GtkAboutDialog *)about_dialog,
+ gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(about_dialog),
authors);
- gtk_about_dialog_set_translator_credits((GtkAboutDialog *)about_dialog,
+ gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(about_dialog),
_("translator-credits"));
- gtk_about_dialog_set_license((GtkAboutDialog *)about_dialog,
+ gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(about_dialog),
xfce_get_license_text(XFCE_LICENSE_TEXT_GPL));
- gtk_about_dialog_set_copyright((GtkAboutDialog *)about_dialog,
+ gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(about_dialog),
"Copyright \302\251 2006-2012 Stephan Arts\n"
"Copyright \302\251 2013-2019 Xfce Developers");
+ gtk_window_set_transient_for(GTK_WINDOW(about_dialog), GTK_WINDOW(window));
gtk_dialog_run(GTK_DIALOG(about_dialog));
gtk_widget_destroy(about_dialog);
@@ -3218,7 +3198,7 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window)
* sourcefunc and will be unref-ed by it.
*/
g_object_ref (file);
- g_idle_add_full(G_PRIORITY_LOW, (GSourceFunc) rstto_main_window_add_file_to_recent_files, file, NULL);
+ gdk_threads_add_idle_full(G_PRIORITY_LOW, (GSourceFunc) rstto_main_window_add_file_to_recent_files, file, NULL);
}
g_object_unref (G_OBJECT (r_file));
r_file = NULL;
@@ -3261,7 +3241,7 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window)
* sourcefunc and will be unref-ed by it.
*/
g_object_ref (files->data);
- g_idle_add_full(G_PRIORITY_LOW, (GSourceFunc) rstto_main_window_add_file_to_recent_files, files->data, NULL);
+ gdk_threads_add_idle_full(G_PRIORITY_LOW, (GSourceFunc) rstto_main_window_add_file_to_recent_files, files->data, NULL);
/* Point the main iterator to the
* correct file
@@ -3288,7 +3268,7 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window)
if (files)
{
- g_slist_free_full (files, (GDestroyNotify) g_object_unref);
+ g_slist_free_full (files, (GDestroyNotify) g_object_unref);
}
}
@@ -3456,7 +3436,7 @@ cb_rstto_main_window_properties (GtkWidget *widget, RsttoMainWindow *window)
*/
if ( TRUE == use_thunar_properties )
{
- GVariant *unused = NULL;
+ GVariant *unused = NULL;
/* Get the file-uri */
uri = rstto_file_get_uri(file);
@@ -4034,8 +4014,8 @@ rstto_main_window_launch_editor_chooser (
NULL);
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
- vbox = gtk_vbox_new (FALSE, 0);
- hbox = gtk_hbox_new (FALSE, 0);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
g_icon = g_content_type_get_icon (content_type);
image = gtk_image_new_from_gicon (g_icon, GTK_ICON_SIZE_DIALOG);
@@ -4490,7 +4470,7 @@ rstto_main_window_play_slideshow (RsttoMainWindow *window)
&timeout);
window->priv->playing = TRUE;
- window->priv->play_timeout_id = g_timeout_add (
+ window->priv->play_timeout_id = gdk_threads_add_timeout (
g_value_get_uint (&timeout)*1000,
(GSourceFunc)cb_rstto_main_window_play_slideshow,
window);
diff --git a/src/monitor_chooser.c b/src/monitor_chooser.c
index 504fafb..45f4282 100644
--- a/src/monitor_chooser.c
+++ b/src/monitor_chooser.c
@@ -62,11 +62,13 @@ rstto_monitor_chooser_finalize(GObject *object);
static void
rstto_monitor_chooser_realize(GtkWidget *widget);
static void
-rstto_monitor_chooser_size_request(GtkWidget *, GtkRequisition *);
+rstto_monitor_chooser_get_preferred_width(GtkWidget *, gint *, gint *);
+static void
+rstto_monitor_chooser_get_preferred_height(GtkWidget *, gint *, gint *);
static void
rstto_monitor_chooser_size_allocate(GtkWidget *, GtkAllocation *);
static gboolean
-rstto_monitor_chooser_expose(GtkWidget *, GdkEventExpose *);
+rstto_monitor_chooser_draw(GtkWidget *, cairo_t *);
static gboolean
rstto_monitor_chooser_paint(GtkWidget *widget);
@@ -126,8 +128,6 @@ rstto_monitor_chooser_init(RsttoMonitorChooser *chooser)
chooser->priv->selected = -1;
chooser->priv->monitors = g_new0 (Monitor *, 1);
- gtk_widget_set_double_buffered (GTK_WIDGET(chooser), TRUE);
-
g_signal_connect(G_OBJECT(chooser), "button-press-event", G_CALLBACK(cb_rstto_button_press_event), NULL);
gtk_widget_set_redraw_on_allocate(GTK_WIDGET(chooser), TRUE);
@@ -146,9 +146,10 @@ rstto_monitor_chooser_class_init(RsttoMonitorChooserClass *chooser_class)
parent_class = g_type_class_peek_parent(chooser_class);
- widget_class->expose_event = rstto_monitor_chooser_expose;
+ widget_class->draw = rstto_monitor_chooser_draw;
widget_class->realize = rstto_monitor_chooser_realize;
- widget_class->size_request = rstto_monitor_chooser_size_request;
+ widget_class->get_preferred_width = rstto_monitor_chooser_get_preferred_width;
+ widget_class->get_preferred_height = rstto_monitor_chooser_get_preferred_height;
widget_class->size_allocate = rstto_monitor_chooser_size_allocate;
object_class->finalize = rstto_monitor_chooser_finalize;
@@ -182,7 +183,6 @@ rstto_monitor_chooser_realize(GtkWidget *widget)
gint attributes_mask;
GtkAllocation allocation;
GdkWindow *window;
- GtkStyle *style;
g_return_if_fail (widget != NULL);
g_return_if_fail (RSTTO_IS_MONITOR_CHOOSER (widget));
@@ -199,25 +199,26 @@ rstto_monitor_chooser_realize(GtkWidget *widget)
attributes.window_type = GDK_WINDOW_CHILD;
attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK;
attributes.visual = gtk_widget_get_visual (widget);
- attributes.colormap = gtk_widget_get_colormap (widget);
+ // TODO: comment out for now
+ //attributes.colormap = gtk_widget_get_colormap (widget);
- attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
+ // TODO: comment out for now
+ attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL /*| GDK_WA_COLORMAP*/;
window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
gtk_widget_set_window (widget, window);
-
- style = gtk_style_attach (gtk_widget_get_style (widget), window);
- gtk_widget_set_style (widget, style);
gdk_window_set_user_data (window, widget);
-
- gtk_style_set_background (gtk_widget_get_style (widget), window, GTK_STATE_ACTIVE);
}
+static void
+rstto_monitor_chooser_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
+{
+ *minimal_width = *natural_width = 400;
+}
static void
-rstto_monitor_chooser_size_request(GtkWidget *widget, GtkRequisition *requisition)
+rstto_monitor_chooser_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
{
- requisition->height = 200;
- requisition->width = 400;
+ *minimal_height = *natural_height = 200;
}
static void
@@ -235,7 +236,7 @@ rstto_monitor_chooser_size_allocate(GtkWidget *widget, GtkAllocation *allocation
}
static gboolean
-rstto_monitor_chooser_expose(GtkWidget *widget, GdkEventExpose *event)
+rstto_monitor_chooser_draw(GtkWidget *widget, cairo_t *cr)
{
rstto_monitor_chooser_paint (widget);
return FALSE;
@@ -247,25 +248,16 @@ rstto_monitor_chooser_paint(GtkWidget *widget)
RsttoMonitorChooser *chooser = RSTTO_MONITOR_CHOOSER (widget);
cairo_t *ctx = gdk_cairo_create (gtk_widget_get_window (widget));
Monitor *monitor;
- GtkAllocation allocation;
gdouble width, height;
gchar *label = NULL;
gint row_width = 0;
gint id = 0;
+ gdouble alloc_width = (gdouble)gtk_widget_get_allocated_width (widget);
+ gdouble alloc_height = (gdouble)gtk_widget_get_allocated_height (widget);
+ GtkStyleContext *context = gtk_widget_get_style_context (widget);
- gtk_widget_get_allocation (widget, &allocation);
-
- gdk_cairo_set_source_color (
- ctx,
- &(gtk_widget_get_style (widget)->bg[GTK_STATE_NORMAL]));
- cairo_rectangle (
- ctx,
- 0.0,
- 0.0,
- (gdouble)allocation.width,
- (gdouble)allocation.height);
- cairo_fill (ctx);
+ gtk_render_background (context, ctx, 0, 0, alloc_width, alloc_height);
if (chooser->priv->n_monitors > 1)
{
@@ -278,12 +270,12 @@ rstto_monitor_chooser_paint(GtkWidget *widget)
{
if (monitor->width > monitor->height)
{
- width = allocation.width*0.4;
+ width = alloc_width*0.4;
height = width;
}
else
{
- height = allocation.width*0.4;
+ height = alloc_width*0.4;
width = height;
}
label = g_strdup_printf("%d", id+1);
@@ -291,8 +283,8 @@ rstto_monitor_chooser_paint(GtkWidget *widget)
paint_monitor (
widget,
ctx,
- ((gdouble)allocation.width/4) - (width/2.0),
- ((gdouble)allocation.height - height)/2.0,
+ (alloc_width/4) - (width/2.0),
+ (alloc_height - height)/2.0,
width,
height,
label,
@@ -307,12 +299,12 @@ rstto_monitor_chooser_paint(GtkWidget *widget)
if (monitor->width > monitor->height)
{
- width = allocation.width*(0.4/((gdouble)row_width+1));
+ width = alloc_width*(0.4/((gdouble)row_width+1));
height = width;
}
else
{
- height = allocation.width*(0.4/chooser->priv->n_monitors);
+ height = alloc_width*(0.4/chooser->priv->n_monitors);
width = height;
}
@@ -324,11 +316,11 @@ rstto_monitor_chooser_paint(GtkWidget *widget)
paint_monitor (
widget,
ctx,
- ((gdouble)allocation.width/2)+
- (((gdouble)allocation.width/2)/
+ (alloc_width/2)+
+ ((alloc_width/2)/
(row_width+1))*(id%(row_width)+1)-
(width/2.0),
- ((gdouble)allocation.height/
+ (alloc_height/
(row_width+2)*(id/row_width+1))-
(height/2.0),
width,
@@ -342,11 +334,11 @@ rstto_monitor_chooser_paint(GtkWidget *widget)
paint_monitor (
widget,
ctx,
- ((gdouble)allocation.width/2)+
- (((gdouble)allocation.width/2)/
+ (alloc_width/2)+
+ ((alloc_width/2)/
(row_width+1))*((id-1)%(row_width)+1)-
(width/2.0),
- ((gdouble)allocation.height/
+ (alloc_height/
(row_width+2)*((id-1)/row_width+1))-
(height/2.0),
width,
@@ -379,8 +371,8 @@ rstto_monitor_chooser_paint(GtkWidget *widget)
paint_monitor (
widget,
ctx,
- ((gdouble)allocation.width - width)/2.0,
- ((gdouble)allocation.height - height)/2.0,
+ (alloc_width - width)/2.0,
+ (alloc_height - height)/2.0,
width,
height,
"1",
diff --git a/src/preferences_dialog.c b/src/preferences_dialog.c
index 0b21f71..b272745 100644
--- a/src/preferences_dialog.c
+++ b/src/preferences_dialog.c
@@ -228,7 +228,7 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
gboolean bool_limit_quality;
gchar *str_desktop_type = NULL;
- GdkColor *bgcolor;
+ GdkRGBA *bgcolor;
GtkWidget *timeout_lbl, *timeout_hscale;
GtkWidget *display_main_vbox;
GtkWidget *display_main_lbl;
@@ -270,20 +270,20 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
/*
* Configure the display tab
*/
- display_main_vbox = gtk_vbox_new(FALSE, 0);
+ display_main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
display_main_lbl = gtk_label_new(_("Display"));
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), display_main_vbox, display_main_lbl);
/**
* Bg-color frame
*/
- dialog->priv->display_tab.bgcolor_vbox = gtk_vbox_new (FALSE, 0);
+ dialog->priv->display_tab.bgcolor_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->display_tab.bgcolor_frame = xfce_gtk_frame_box_new_with_content(_("Background color"),
dialog->priv->display_tab.bgcolor_vbox);
gtk_box_pack_start (GTK_BOX (display_main_vbox), dialog->priv->display_tab.bgcolor_frame, FALSE, FALSE, 0);
dialog->priv->display_tab.bgcolor_override_check_button = gtk_check_button_new_with_label (_("Override background color:"));
- dialog->priv->display_tab.bgcolor_hbox = gtk_hbox_new (FALSE, 4);
+ dialog->priv->display_tab.bgcolor_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
dialog->priv->display_tab.bgcolor_color_button = gtk_color_button_new();
gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.bgcolor_hbox),
@@ -294,7 +294,7 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
dialog->priv->display_tab.bgcolor_hbox, FALSE, FALSE, 0);
/* set current value */
- gtk_color_button_set_color (GTK_COLOR_BUTTON (dialog->priv->display_tab.bgcolor_color_button),
+ gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (dialog->priv->display_tab.bgcolor_color_button),
bgcolor);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->display_tab.bgcolor_override_check_button),
@@ -308,14 +308,15 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
g_signal_connect (G_OBJECT (dialog->priv->display_tab.bgcolor_color_button),
"color-set", G_CALLBACK (cb_bgcolor_color_set), dialog);
- dialog->priv->display_tab.quality_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->display_tab.quality_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->display_tab.quality_frame = xfce_gtk_frame_box_new_with_content(_("Quality"), dialog->priv->display_tab.quality_vbox);
gtk_box_pack_start (GTK_BOX (display_main_vbox), dialog->priv->display_tab.quality_frame, FALSE, FALSE, 0);
dialog->priv->display_tab.quality_label = gtk_label_new (
_("With this option enabled, the maximum image-quality will be limited to the screen-size."));
gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->display_tab.quality_label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(dialog->priv->display_tab.quality_label), 0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (dialog->priv->display_tab.quality_label), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (dialog->priv->display_tab.quality_label), 0.5);
dialog->priv->display_tab.quality_button = gtk_check_button_new_with_label (_("Limit rendering quality"));
gtk_container_add (GTK_CONTAINER (dialog->priv->display_tab.quality_vbox), dialog->priv->display_tab.quality_label);
gtk_container_add (GTK_CONTAINER (dialog->priv->display_tab.quality_vbox), dialog->priv->display_tab.quality_button);
@@ -327,18 +328,19 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
/*
* Fullscreen tab
*/
- fullscreen_main_vbox = gtk_vbox_new(FALSE, 0);
+ fullscreen_main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
fullscreen_main_lbl = gtk_label_new(_("Fullscreen"));
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), fullscreen_main_vbox, fullscreen_main_lbl);
- dialog->priv->fullscreen_tab.thumbnail_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->fullscreen_tab.thumbnail_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->fullscreen_tab.thumbnail_frame = xfce_gtk_frame_box_new_with_content(_("Thumbnails"), dialog->priv->fullscreen_tab.thumbnail_vbox);
gtk_box_pack_start (GTK_BOX (fullscreen_main_vbox), dialog->priv->fullscreen_tab.thumbnail_frame, FALSE, FALSE, 0);
dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl = gtk_label_new(_("The thumbnail bar can be automatically hidden when the window is fullscreen."));
gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl), TRUE);
- gtk_misc_set_alignment(GTK_MISC(dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl), 0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl), 0.5);
dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_check_button = gtk_check_button_new_with_label (_("Hide thumbnail bar when fullscreen"));
gtk_box_pack_start (GTK_BOX (dialog->priv->fullscreen_tab.thumbnail_vbox), dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (dialog->priv->fullscreen_tab.thumbnail_vbox), dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_check_button, FALSE, FALSE, 0);
@@ -346,13 +348,14 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_check_button),
bool_hide_thumbnails_fullscreen);
- dialog->priv->fullscreen_tab.clock_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->fullscreen_tab.clock_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->fullscreen_tab.clock_frame = xfce_gtk_frame_box_new_with_content(_("Clock"), dialog->priv->fullscreen_tab.clock_vbox);
gtk_box_pack_start (GTK_BOX (fullscreen_main_vbox), dialog->priv->fullscreen_tab.clock_frame, FALSE, FALSE, 0);
dialog->priv->fullscreen_tab.clock_label = gtk_label_new ( _("Show an analog clock that displays the current time when the window is fullscreen"));
gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->fullscreen_tab.clock_label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(dialog->priv->fullscreen_tab.clock_label), 0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (dialog->priv->fullscreen_tab.clock_label), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (dialog->priv->fullscreen_tab.clock_label), 0.5);
dialog->priv->fullscreen_tab.clock_button = gtk_check_button_new_with_label (_("Show Fullscreen Clock"));
gtk_container_add (GTK_CONTAINER (dialog->priv->fullscreen_tab.clock_vbox), dialog->priv->fullscreen_tab.clock_label);
gtk_container_add (GTK_CONTAINER (dialog->priv->fullscreen_tab.clock_vbox), dialog->priv->fullscreen_tab.clock_button);
@@ -369,18 +372,18 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
/*
* Slideshow tab
*/
- slideshow_main_vbox = gtk_vbox_new(FALSE, 0);
+ slideshow_main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
slideshow_main_lbl = gtk_label_new(_("Slideshow"));
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), slideshow_main_vbox, slideshow_main_lbl);
- dialog->priv->slideshow_tab.timeout_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->slideshow_tab.timeout_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->slideshow_tab.timeout_frame = xfce_gtk_frame_box_new_with_content(_("Timeout"), dialog->priv->slideshow_tab.timeout_vbox);
gtk_box_pack_start (GTK_BOX (slideshow_main_vbox), dialog->priv->slideshow_tab.timeout_frame, FALSE, FALSE, 0);
timeout_lbl = gtk_label_new(_("The time period an individual image is displayed during a slideshow\n(in seconds)"));
- timeout_hscale = gtk_hscale_new_with_range(1, 60, 1);
- gtk_misc_set_alignment(GTK_MISC(timeout_lbl), 0, 0.5);
- gtk_misc_set_padding(GTK_MISC(timeout_lbl), 2, 2);
+ timeout_hscale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 1, 60, 1);
+ gtk_label_set_xalign (GTK_LABEL (timeout_lbl), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (timeout_lbl), 0.5);
gtk_box_pack_start(GTK_BOX(dialog->priv->slideshow_tab.timeout_vbox), timeout_lbl, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(dialog->priv->slideshow_tab.timeout_vbox), timeout_hscale, FALSE, TRUE, 0);
@@ -394,11 +397,11 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
dialog);
- control_main_vbox = gtk_vbox_new(FALSE, 0);
+ control_main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
control_main_lbl = gtk_label_new(_("Control"));
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), control_main_vbox, control_main_lbl);
- dialog->priv->control_tab.scroll_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->control_tab.scroll_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->control_tab.scroll_frame = xfce_gtk_frame_box_new_with_content(_("Scroll wheel"), dialog->priv->control_tab.scroll_vbox);
gtk_box_pack_start (GTK_BOX (control_main_vbox), dialog->priv->control_tab.scroll_frame, FALSE, FALSE, 0);
@@ -415,12 +418,12 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
/*
* Behaviour tab
*/
- behaviour_main_vbox = gtk_vbox_new(FALSE, 0);
+ behaviour_main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
behaviour_main_lbl = gtk_label_new(_("Behaviour"));
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), behaviour_main_vbox, behaviour_main_lbl);
/********************************************/
- dialog->priv->behaviour_tab.startup_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->behaviour_tab.startup_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->behaviour_tab.startup_frame = xfce_gtk_frame_box_new_with_content(_("Startup"), dialog->priv->behaviour_tab.startup_vbox);
gtk_box_pack_start (GTK_BOX (behaviour_main_vbox), dialog->priv->behaviour_tab.startup_frame, FALSE, FALSE, 0);
dialog->priv->behaviour_tab.maximize_window_on_startup_check_button = gtk_check_button_new_with_label (_("Maximize window on startup when opening an image"));
@@ -446,7 +449,7 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
dialog);
/********************************************/
- dialog->priv->behaviour_tab.desktop_vbox = gtk_vbox_new(FALSE, 4);
+ dialog->priv->behaviour_tab.desktop_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
dialog->priv->behaviour_tab.desktop_frame = xfce_gtk_frame_box_new_with_content(
_("Desktop"),
dialog->priv->behaviour_tab.desktop_vbox);
@@ -462,9 +465,11 @@ rstto_preferences_dialog_init ( RsttoPreferencesDialog *dialog )
_("Configure which system is currently managing your desktop.\n"
"This setting determines the method <i>Ristretto</i> will use\n"
"to configure the desktop wallpaper."));
- gtk_misc_set_alignment(
- GTK_MISC(behaviour_desktop_lbl),
- 0,
+ gtk_label_set_xalign (
+ GTK_LABEL (behaviour_desktop_lbl),
+ 0.0);
+ gtk_label_set_yalign (
+ GTK_LABEL (behaviour_desktop_lbl),
0.5);
gtk_box_pack_start (
GTK_BOX (dialog->priv->behaviour_tab.desktop_vbox),
@@ -668,11 +673,11 @@ cb_bgcolor_color_set (
/* Code Section */
- g_value_init (&bgcolor_val, GDK_TYPE_COLOR);
+ g_value_init (&bgcolor_val, GDK_TYPE_RGBA);
g_object_get_property (
G_OBJECT(button),
- "color",
+ "rgba",
&bgcolor_val);
g_object_set_property (
G_OBJECT(dialog->priv->settings),
diff --git a/src/privacy_dialog.c b/src/privacy_dialog.c
index f936ddc..5ee8d33 100644
--- a/src/privacy_dialog.c
+++ b/src/privacy_dialog.c
@@ -146,11 +146,10 @@ rstto_privacy_dialog_init (RsttoPrivacyDialog *dialog)
dialog,
NULL);
- display_main_hbox = gtk_hbox_new(FALSE, 0);
+ display_main_hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
display_main_lbl = gtk_label_new(_("Time range to clear:"));
-
- dialog->priv->cleanup_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->cleanup_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
dialog->priv->cleanup_frame = xfce_gtk_frame_box_new_with_content(_("Cleanup"), dialog->priv->cleanup_vbox);
dialog->priv->cleanup_timeframe_combo = gtk_combo_box_text_new();
gtk_combo_box_text_insert_text(GTK_COMBO_BOX_TEXT(dialog->priv->cleanup_timeframe_combo), 0, _("Last Hour"));
diff --git a/src/properties_dialog.c b/src/properties_dialog.c
index 7ee01b1..7f7afd5 100644
--- a/src/properties_dialog.c
+++ b/src/properties_dialog.c
@@ -123,10 +123,10 @@ static void
rstto_properties_dialog_init (RsttoPropertiesDialog *dialog)
{
GtkWidget *vbox;
- GtkWidget *table;
+ GtkWidget *grid;
/* General tab */
GtkWidget *general_label;
- GtkWidget *name_hbox = gtk_hbox_new (FALSE, 4);
+ GtkWidget *name_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
GtkWidget *name_label = gtk_label_new(NULL);
GtkWidget *mime_label = gtk_label_new(NULL);
@@ -145,28 +145,22 @@ rstto_properties_dialog_init (RsttoPropertiesDialog *dialog)
dialog->priv->accessed_content_label = gtk_label_new(NULL);
dialog->priv->size_content_label = gtk_label_new(NULL);
- gtk_misc_set_alignment (
- GTK_MISC (dialog->priv->mime_content_label),
- 0.0,
- 0.5);
- gtk_misc_set_alignment (
- GTK_MISC (dialog->priv->modified_content_label),
- 0.0,
- 0.5);
- gtk_misc_set_alignment (
- GTK_MISC (dialog->priv->accessed_content_label),
- 0.0,
- 0.5);
- gtk_misc_set_alignment (
- GTK_MISC (dialog->priv->size_content_label),
- 0.0,
- 0.5);
+ gtk_label_set_xalign (GTK_LABEL (dialog->priv->mime_content_label), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (dialog->priv->mime_content_label), 0.5);
+ gtk_label_set_xalign (GTK_LABEL (dialog->priv->modified_content_label), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (dialog->priv->modified_content_label), 0.5);
+ gtk_label_set_xalign (GTK_LABEL (dialog->priv->accessed_content_label), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (dialog->priv->accessed_content_label), 0.5);
+ gtk_label_set_xalign (GTK_LABEL (dialog->priv->size_content_label), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (dialog->priv->size_content_label), 0.5);
vbox = gtk_dialog_get_content_area (
GTK_DIALOG (dialog));
dialog->priv->notebook = gtk_notebook_new ();
- table = gtk_table_new (5, 2, FALSE);
+ grid = gtk_grid_new ();
+ gtk_grid_set_column_spacing (GTK_GRID (grid), 4);
+ gtk_grid_set_row_spacing (GTK_GRID (grid), 4);
gtk_box_pack_start (
GTK_BOX (name_hbox),
dialog->priv->image_thumbnail,
@@ -175,138 +169,40 @@ rstto_properties_dialog_init (RsttoPropertiesDialog *dialog)
GTK_BOX (name_hbox),
name_label,
TRUE, TRUE, 0);
- gtk_label_set_markup (GTK_LABEL(name_label), _("<b>Name:</b>"));
- gtk_label_set_markup (GTK_LABEL(mime_label), _("<b>Kind:</b>"));
- gtk_label_set_markup (GTK_LABEL(modified_label), _("<b>Modified:</b>"));
- gtk_label_set_markup (GTK_LABEL(accessed_label), _("<b>Accessed:</b>"));
- gtk_label_set_markup (GTK_LABEL(size_label), _("<b>Size:</b>"));
-
- gtk_misc_set_alignment (GTK_MISC (name_label), 1.0, 0.5);
- gtk_misc_set_alignment (GTK_MISC (mime_label), 1.0, 0.5);
- gtk_misc_set_alignment (GTK_MISC (modified_label), 1.0, 0.5);
- gtk_misc_set_alignment (GTK_MISC (accessed_label), 1.0, 0.5);
- gtk_misc_set_alignment (GTK_MISC (size_label), 1.0, 0.5);
-
- gtk_table_attach (
- GTK_TABLE (table),
- name_hbox,
- 0,
- 1,
- 0,
- 1,
- GTK_SHRINK | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
-
- gtk_table_attach (
- GTK_TABLE (table),
- dialog->priv->name_entry,
- 1,
- 2,
- 0,
- 1,
- GTK_EXPAND | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
-
- gtk_table_attach (
- GTK_TABLE (table),
- mime_label,
- 0,
- 1,
- 1,
- 2,
- GTK_SHRINK | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
- gtk_table_attach (
- GTK_TABLE (table),
- dialog->priv->mime_content_label,
- 1,
- 2,
- 1,
- 2,
- GTK_EXPAND | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
-
- gtk_table_attach (
- GTK_TABLE (table),
- modified_label,
- 0,
- 1,
- 2,
- 3,
- GTK_SHRINK | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
- gtk_table_attach (
- GTK_TABLE (table),
- dialog->priv->modified_content_label,
- 1,
- 2,
- 2,
- 3,
- GTK_EXPAND | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
-
- gtk_table_attach (
- GTK_TABLE (table),
- accessed_label,
- 0,
- 1,
- 3,
- 4,
- GTK_SHRINK | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
- gtk_table_attach (
- GTK_TABLE (table),
- dialog->priv->accessed_content_label,
- 1,
- 2,
- 3,
- 4,
- GTK_EXPAND | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
-
- gtk_table_attach (
- GTK_TABLE (table),
- size_label,
- 0,
- 1,
- 4,
- 5,
- GTK_SHRINK | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
- gtk_table_attach (
- GTK_TABLE (table),
- dialog->priv->size_content_label,
- 1,
- 2,
- 4,
- 5,
- GTK_EXPAND | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
+ gtk_label_set_markup (GTK_LABEL (name_label), _("<b>Name:</b>"));
+ gtk_label_set_markup (GTK_LABEL (mime_label), _("<b>Kind:</b>"));
+ gtk_label_set_markup (GTK_LABEL (modified_label), _("<b>Modified:</b>"));
+ gtk_label_set_markup (GTK_LABEL (accessed_label), _("<b>Accessed:</b>"));
+ gtk_label_set_markup (GTK_LABEL (size_label), _("<b>Size:</b>"));
+
+ gtk_label_set_xalign (GTK_LABEL (name_label), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (name_label), 0.5);
+ gtk_label_set_xalign (GTK_LABEL (mime_label), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (mime_label), 0.5);
+ gtk_label_set_xalign (GTK_LABEL (modified_label), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (modified_label), 0.5);
+ gtk_label_set_xalign (GTK_LABEL (accessed_label), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (accessed_label), 0.5);
+ gtk_label_set_xalign (GTK_LABEL (size_label), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (size_label), 0.5);
+
+ gtk_grid_attach (GTK_GRID (grid), name_hbox, 0, 0, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), dialog->priv->name_entry, 1, 0, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), mime_label, 0, 1, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), dialog->priv->mime_content_label, 1, 1, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), modified_label, 0, 2, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), dialog->priv->modified_content_label, 1, 2, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), accessed_label, 0, 3, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), dialog->priv->accessed_content_label, 1, 3, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), size_label, 0, 4, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), dialog->priv->size_content_label, 1, 4, 1, 1);
general_label = gtk_label_new (_("General"));
- gtk_notebook_append_page (GTK_NOTEBOOK (dialog->priv->notebook), table, general_label);
+ gtk_notebook_append_page (GTK_NOTEBOOK (dialog->priv->notebook), grid, general_label);
- dialog->priv->image_table = gtk_table_new (5, 2, FALSE);
+ dialog->priv->image_table = gtk_grid_new ();
+ gtk_grid_set_column_spacing (GTK_GRID (dialog->priv->image_table), 4);
+ gtk_grid_set_row_spacing (GTK_GRID (dialog->priv->image_table), 4);
dialog->priv->image_label = gtk_label_new (_("Image"));
gtk_notebook_append_page (
@@ -321,7 +217,6 @@ rstto_properties_dialog_init (RsttoPropertiesDialog *dialog)
/* Window should not be resizable */
gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
-
gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Close"), GTK_RESPONSE_OK);
}
@@ -589,42 +484,36 @@ properties_dialog_set_file (
gtk_label_set_markup (
GTK_LABEL (exif_label),
label_string);
- gtk_misc_set_alignment (
- GTK_MISC (exif_label),
- 1.0,
+ gtk_label_set_xalign (
+ GTK_LABEL (exif_label),
+ 1.0);
+ gtk_label_set_yalign (
+ GTK_LABEL (exif_label),
0.5);
gtk_label_set_text (
GTK_LABEL (exif_content_label),
exif_data
);
- gtk_table_attach (
- GTK_TABLE (dialog->priv->image_table),
+ gtk_grid_attach (
+ GTK_GRID (dialog->priv->image_table),
exif_label,
0,
- 1,
i,
- i+1,
- GTK_SHRINK | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
- gtk_table_attach (
- GTK_TABLE (dialog->priv->image_table),
+ 1,
+ 1);
+ gtk_grid_attach (
+ GTK_GRID (dialog->priv->image_table),
exif_content_label,
1,
- 2,
i,
- i+1,
- GTK_EXPAND | GTK_FILL,
- GTK_SHRINK,
- 4,
- 4);
+ 1,
+ 1);
if (NULL != label_string)
{
g_free (label_string);
}
- }
+ }
gtk_widget_show_all (dialog->priv->image_table);
}
diff --git a/src/settings.c b/src/settings.c
index 118fd79..8e80f43 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -121,9 +121,9 @@ struct _RsttoSettingsPriv
guint window_height;
gchar *last_file_path;
guint slideshow_timeout;
- GdkColor *bgcolor;
+ GdkRGBA *bgcolor;
gboolean bgcolor_override;
- GdkColor *bgcolor_fullscreen;
+ GdkRGBA *bgcolor_fullscreen;
gboolean wrap_images;
gchar *desktop_type;
gboolean use_thunar_properties;
@@ -174,8 +174,8 @@ rstto_settings_init (GObject *object)
}
settings->priv->slideshow_timeout = 5;
- settings->priv->bgcolor = g_new0 (GdkColor, 1);
- settings->priv->bgcolor_fullscreen = g_new0 (GdkColor, 1);
+ settings->priv->bgcolor = g_new0 (GdkRGBA, 1);
+ settings->priv->bgcolor_fullscreen = g_new0 (GdkRGBA, 1);
settings->priv->navigationbar_position = g_strdup ("left");
settings->priv->show_toolbar = TRUE;
settings->priv->window_width = 600;
@@ -272,12 +272,12 @@ rstto_settings_init (GObject *object)
settings,
"bgcolor-override");
- xfconf_g_property_bind_gdkcolor (
+ xfconf_g_property_bind_gdkrgba (
settings->priv->channel,
"/window/bgcolor",
settings,
"bgcolor");
- xfconf_g_property_bind_gdkcolor (
+ xfconf_g_property_bind_gdkrgba (
settings->priv->channel,
"/window/bgcolor-fullscreen",
settings,
@@ -499,7 +499,7 @@ rstto_settings_class_init (GObjectClass *object_class)
"bgcolor",
"",
"",
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READWRITE);
g_object_class_install_property (
object_class,
@@ -521,7 +521,7 @@ rstto_settings_class_init (GObjectClass *object_class)
"bgcolor-fullscreen",
"",
"",
- GDK_TYPE_COLOR,
+ GDK_TYPE_RGBA,
G_PARAM_READWRITE);
g_object_class_install_property (
object_class,
@@ -715,7 +715,7 @@ rstto_settings_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
- GdkColor *color;
+ GdkRGBA *color;
const gchar *str_val = NULL;
RsttoSettings *settings = RSTTO_SETTINGS (object);
@@ -766,6 +766,7 @@ rstto_settings_set_property (GObject *object,
settings->priv->bgcolor->red = color->red;
settings->priv->bgcolor->green = color->green;
settings->priv->bgcolor->blue = color->blue;
+ settings->priv->bgcolor->alpha = color->alpha;
break;
case PROP_BGCOLOR_OVERRIDE:
settings->priv->bgcolor_override = g_value_get_boolean (value);
@@ -783,6 +784,7 @@ rstto_settings_set_property (GObject *object,
settings->priv->bgcolor_fullscreen->red = color->red;
settings->priv->bgcolor_fullscreen->green = color->green;
settings->priv->bgcolor_fullscreen->blue = color->blue;
+ settings->priv->bgcolor_fullscreen->alpha = color->alpha;
break;
case PROP_WRAP_IMAGES:
settings->priv->wrap_images = g_value_get_boolean (value);
diff --git a/src/thumbnailer.c b/src/thumbnailer.c
index 17318e8..7d2d7ac 100644
--- a/src/thumbnailer.c
+++ b/src/thumbnailer.c
@@ -319,7 +319,7 @@ rstto_thumbnailer_queue_file (
file);
}
- thumbnailer->priv->request_timer_id = g_timeout_add_full (
+ thumbnailer->priv->request_timer_id = gdk_threads_add_timeout_full (
G_PRIORITY_LOW,
300,
(GSourceFunc)rstto_thumbnailer_queue_request_timer,
@@ -365,7 +365,7 @@ rstto_thumbnailer_dequeue_file (
g_object_unref (file);
}
- thumbnailer->priv->request_timer_id = g_timeout_add_full (
+ thumbnailer->priv->request_timer_id = gdk_threads_add_timeout_full (
G_PRIORITY_LOW,
300,
(GSourceFunc)rstto_thumbnailer_queue_request_timer,
@@ -429,8 +429,6 @@ rstto_thumbnailer_queue_request_timer (
(error->code == G_DBUS_ERROR_SERVICE_UNKNOWN) &&
thumbnailer->priv->show_missing_thumbnailer_error == TRUE)
{
- GDK_THREADS_ENTER();
-
error_dialog = gtk_message_dialog_new_with_markup (
NULL,
0,
@@ -466,7 +464,6 @@ rstto_thumbnailer_queue_request_timer (
FALSE);
}
gtk_widget_destroy (error_dialog);
- GDK_THREADS_LEAVE();
}
}
/* TOOO: Nice cleanup */
diff --git a/src/xfce_wallpaper_manager.c b/src/xfce_wallpaper_manager.c
index 3105448..ca98e35 100644
--- a/src/xfce_wallpaper_manager.c
+++ b/src/xfce_wallpaper_manager.c
@@ -248,14 +248,13 @@ rstto_xfce_wallpaper_manager_check_running (RsttoWallpaperManager *self)
{
gchar selection_name[100];
Atom xfce_selection_atom;
- GdkScreen *gdk_screen = gdk_screen_get_default();
- gint xscreen = gdk_screen_get_number(gdk_screen);
- Display *gdk_display = gdk_x11_get_default_xdisplay();
+ gint xscreen = 0;
+ Display *gdk_display = gdk_x11_get_default_xdisplay ();
g_snprintf(selection_name, 100, XFDESKTOP_SELECTION_FMT, xscreen);
xfce_selection_atom = XInternAtom (gdk_display, selection_name, False);
- if((XGetSelectionOwner(gdk_display, xfce_selection_atom)))
+ if ((XGetSelectionOwner (gdk_display, xfce_selection_atom)))
{
return TRUE;
}
@@ -277,13 +276,12 @@ rstto_xfce_wallpaper_manager_set (RsttoWallpaperManager *self, RsttoFile *file)
gchar *image_style_prop;
display = gdk_display_get_default ();
- gdk_screen = gdk_display_get_screen (display,
- manager->priv->screen);
+ gdk_screen = gdk_display_get_default_screen (display);
workspace_nr = rstto_get_active_workspace_number (gdk_screen);
- monitor_name = gdk_screen_get_monitor_plug_name (gdk_screen,
- manager->priv->monitor);
+ monitor_name = gdk_monitor_get_model (
+ gdk_display_get_monitor (display, manager->priv->monitor));
/* New properties since xfdesktop >= 4.11 */
if (monitor_name)
@@ -320,7 +318,6 @@ rstto_xfce_wallpaper_manager_set (RsttoWallpaperManager *self, RsttoFile *file)
g_free (monitor_name);
}
-
xfconf_channel_set_string (
manager->priv->channel,
image_path_prop,
@@ -402,12 +399,12 @@ rstto_xfce_wallpaper_manager_init (GObject *object)
{
RsttoXfceWallpaperManager *manager = RSTTO_XFCE_WALLPAPER_MANAGER (object);
gint i;
- GdkScreen *screen = gdk_screen_get_default ();
- gint n_monitors = gdk_screen_get_n_monitors (screen);
+ GdkDisplay *display = gdk_display_get_default ();
+ gint n_monitors = gdk_display_get_n_monitors (display);
GdkRectangle monitor_geometry;
GtkWidget *vbox;
GtkWidget *style_label = gtk_label_new (_("Style:"));
- GtkWidget *image_prop_table = gtk_table_new (2, 2, FALSE);
+ GtkWidget *image_prop_grid = gtk_grid_new ();
manager->priv = g_new0(RsttoXfceWallpaperManagerPriv, 1);
manager->priv->channel = xfconf_channel_new ("xfce4-desktop");
@@ -439,14 +436,13 @@ rstto_xfce_wallpaper_manager_init (GObject *object)
manager->priv->monitor_chooser = rstto_monitor_chooser_new ();
manager->priv->style_combo = gtk_combo_box_text_new ();
- gtk_table_set_row_spacings (GTK_TABLE (image_prop_table), 6);
- gtk_table_set_col_spacings (GTK_TABLE (image_prop_table), 6);
+ gtk_grid_set_row_spacing (GTK_GRID (image_prop_grid), 6);
+ gtk_grid_set_column_spacing (GTK_GRID (image_prop_grid), 6);
for (i = 0; i < n_monitors; ++i)
{
- gdk_screen_get_monitor_geometry (
- screen,
- i,
+ gdk_monitor_get_geometry (
+ gdk_display_get_monitor (display, i),
&monitor_geometry);
rstto_monitor_chooser_add (
RSTTO_MONITOR_CHOOSER (manager->priv->monitor_chooser),
@@ -462,34 +458,27 @@ rstto_xfce_wallpaper_manager_init (GObject *object)
0);
gtk_box_pack_start (
GTK_BOX (vbox),
- image_prop_table,
+ image_prop_grid,
FALSE,
FALSE,
0);
- gtk_table_attach (
- GTK_TABLE (image_prop_table),
+ gtk_grid_attach (
+ GTK_GRID (image_prop_grid),
style_label,
0,
- 1,
0,
1,
- 0,
- 0,
- 0,
- 0);
- gtk_table_attach (
- GTK_TABLE (image_prop_table),
+ 1);
+ gtk_grid_attach (
+ GTK_GRID (image_prop_grid),
manager->priv->style_combo,
1,
- 2,
0,
1,
- GTK_EXPAND|GTK_FILL,
- 0,
- 0,
- 0);
+ 1);
+ gtk_widget_set_hexpand (manager->priv->style_combo, TRUE);
gtk_combo_box_text_append_text (
GTK_COMBO_BOX_TEXT (manager->priv->style_combo),
_("Auto"));
@@ -513,7 +502,8 @@ rstto_xfce_wallpaper_manager_init (GObject *object)
GTK_COMBO_BOX (manager->priv->style_combo),
3);
- manager->priv->screen = gdk_screen_get_number (screen);
+ // there's only one screen in GTK3
+ manager->priv->screen = 0;
gtk_window_set_resizable (GTK_WINDOW (manager->priv->dialog), FALSE);
@@ -531,17 +521,13 @@ rstto_xfce_wallpaper_manager_init (GObject *object)
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (manager->priv->check_button),
manager->priv->workspace_mode);
- gtk_table_attach (
- GTK_TABLE (image_prop_table),
+ gtk_grid_attach (
+ GTK_GRID (image_prop_grid),
manager->priv->check_button,
0,
- 2,
1,
2,
- GTK_EXPAND|GTK_FILL,
- 0,
- 0,
- 0);
+ 1);
g_signal_connect (manager->priv->check_button,
"toggled",
G_CALLBACK (cb_workspace_mode_changed),
@@ -680,12 +666,7 @@ rstto_get_active_workspace_number (GdkScreen *screen)
XFree (prop_ret);
}
-#if GTK_CHECK_VERSION (3, 0, 0)
gdk_error_trap_pop_ignored ();
-#else
- if (gdk_error_trap_pop () != 0)
- return 0;
-#endif
return ws_num;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list