#endif
}
-void align_label_left(GtkLabel *label)
-{
-#if GTK_CHECK_VERSION(3,16,0)
- gtk_label_set_xalign(label, 0.0);
-#else
- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
-#endif
-}
-
void dlg_error_msg(void *dlg, const char *msg)
{
struct dlgparam *dp = (struct dlgparam *)dlg;
return dp.retval;
}
-int string_width(const char *text)
-{
- int ret;
- get_label_text_dimensions(text, &ret, NULL);
- return ret;
-}
-
int reallyclose(void *frontend)
{
char *title = dupcat(appname, " Exit Confirmation", NULL);
#include "putty.h"
#include "gtkfont.h"
#include "gtkcompat.h"
+#include "gtkmisc.h"
#include "tree234.h"
#ifndef NOT_X_WINDOWS
}
}
-/* ----------------------------------------------------------------------
- * Utility routine used by the code below, and also gtkdlg.c.
- */
-
-void get_label_text_dimensions(const char *text, int *width, int *height)
-{
- /*
- * Determine the dimensions of a piece of text in the standard
- * font used in GTK interface elements like labels. We do this by
- * instantiating an actual GtkLabel, and then querying its size.
- *
- * But GTK2 and GTK3 require us to query the size completely
- * differently. I'm sure there ought to be an easier approach than
- * the way I'm doing this in GTK3, too!
- */
- GtkWidget *label = gtk_label_new(text);
-
-#if GTK_CHECK_VERSION(3,0,0)
- PangoLayout *layout = gtk_label_get_layout(GTK_LABEL(label));
- PangoRectangle logrect;
- pango_layout_get_extents(layout, NULL, &logrect);
- if (width)
- *width = logrect.width / PANGO_SCALE;
- if (height)
- *height = logrect.height / PANGO_SCALE;
-#else
- GtkRequisition req;
- gtk_widget_size_request(label, &req);
- if (width)
- *width = req.width;
- if (height)
- *height = req.height;
-#endif
-
- g_object_ref_sink(G_OBJECT(label));
-#if GTK_CHECK_VERSION(2,10,0)
- g_object_unref(label);
-#endif
-}
-
#if GTK_CHECK_VERSION(2,0,0)
/* ----------------------------------------------------------------------
#include "putty.h"
#include "gtkcompat.h"
+void get_label_text_dimensions(const char *text, int *width, int *height)
+{
+ /*
+ * Determine the dimensions of a piece of text in the standard
+ * font used in GTK interface elements like labels. We do this by
+ * instantiating an actual GtkLabel, and then querying its size.
+ *
+ * But GTK2 and GTK3 require us to query the size completely
+ * differently. I'm sure there ought to be an easier approach than
+ * the way I'm doing this in GTK3, too!
+ */
+ GtkWidget *label = gtk_label_new(text);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ PangoLayout *layout = gtk_label_get_layout(GTK_LABEL(label));
+ PangoRectangle logrect;
+ pango_layout_get_extents(layout, NULL, &logrect);
+ if (width)
+ *width = logrect.width / PANGO_SCALE;
+ if (height)
+ *height = logrect.height / PANGO_SCALE;
+#else
+ GtkRequisition req;
+ gtk_widget_size_request(label, &req);
+ if (width)
+ *width = req.width;
+ if (height)
+ *height = req.height;
+#endif
+
+ g_object_ref_sink(G_OBJECT(label));
+#if GTK_CHECK_VERSION(2,10,0)
+ g_object_unref(label);
+#endif
+}
+
+int string_width(const char *text)
+{
+ int ret;
+ get_label_text_dimensions(text, &ret, NULL);
+ return ret;
+}
+
+void align_label_left(GtkLabel *label)
+{
+#if GTK_CHECK_VERSION(3,16,0)
+ gtk_label_set_xalign(label, 0.0);
+#else
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
+#endif
+}
+
/* ----------------------------------------------------------------------
* Functions to arrange controls in a basically dialog-like window.
*
#ifndef PUTTY_GTKMISC_H
#define PUTTY_GTKMISC_H
+int string_width(const char *text);
+void get_label_text_dimensions(const char *text, int *width, int *height);
+
+void align_label_left(GtkLabel *label);
+
GtkWidget *our_dialog_new(void);
void our_dialog_add_to_content_area(GtkWindow *dlg, GtkWidget *w,
gboolean expand, gboolean fill,
#include "terminal.h"
#include "gtkcompat.h"
#include "gtkfont.h"
+#include "gtkmisc.h"
#ifndef NOT_X_WINDOWS
#include <gdk/gdkx.h>
#ifdef MAY_REFER_TO_GTK_IN_HEADERS
int messagebox(GtkWidget *parentwin, const char *title,
const char *msg, int minwid, ...);
-int string_width(const char *text);
#endif
/* Things pterm.c needs from {ptermm,uxputty}.c */
/* gtkcfg.c */
void gtk_setup_config_box(struct controlbox *b, int midsession, void *window);
-/* General GTK helper functions, which could be in any source file and
- * it doesn't really matter */
-void get_label_text_dimensions(const char *text, int *width, int *height);
-#ifdef MAY_REFER_TO_GTK_IN_HEADERS
-void align_label_left(GtkLabel *label);
-#endif
-
/*
* In the Unix Unicode layer, DEFAULT_CODEPAGE is a special value
* which causes mb_to_wc and wc_to_mb to call _libc_ rather than