Commit c5de754e authored by Victor Ananjesky's avatar Victor Ananjesky

rewrite geometry parsing

parent c663ee33
......@@ -381,7 +381,7 @@ create_dialog (void)
gtk_container_set_border_width (GTK_CONTAINER (dlg), (guint) options.data.borders);
/* set window size and position */
if (!options.data.geometry && !options.data.maximized && !options.data.fullscreen)
if (!options.data.maximized && !options.data.fullscreen)
{
if (options.data.center)
gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_CENTER_ALWAYS);
......@@ -596,51 +596,8 @@ create_dialog (void)
if (!options.data.maximized && !options.data.fullscreen)
{
gtk_widget_realize (dlg);
/* parse geometry string */
if (options.data.geometry)
{
gchar **geom;
geom = g_new0 (gchar *, 5);
if (*options.data.geometry == '+' || *options.data.geometry == '-')
{
geom = g_strsplit_set (options.data.geometry, "+-", 3);
if (geom[1])
{
options.data.use_posx = TRUE;
options.data.posx = atoi (geom[1]);
if (geom[2])
{
options.data.use_posy = TRUE;
options.data.posy = atoi (geom[2]);
}
}
}
else
{
geom = g_strsplit_set (options.data.geometry, "x+-", 4);
if (geom[0])
{
options.data.width = atoi (geom[0]);
if (geom[1])
{
options.data.height = atoi (geom[1]);
if (geom[2])
{
options.data.use_posx = TRUE;
options.data.posx = atoi (geom[2]);
if (geom[3])
{
options.data.use_posy = TRUE;
options.data.posy = atoi (geom[3]);
}
}
}
}
}
g_strfreev (geom);
}
parse_geometry ();
gtk_widget_set_size_request (dlg, options.data.width, options.data.height);
gtk_window_set_resizable (GTK_WINDOW (dlg), !options.data.fixed);
......
......@@ -576,6 +576,59 @@ check_complete (GtkEntryCompletion *c, const gchar *key, GtkTreeIter *iter, gpoi
return found;
}
void
parse_geometry ()
{
gchar *geom, *ptr;
gint w = -1, h = -1, x = 0, y = 0;
gboolean usexy = FALSE;
guint i = 0;
if (!options.data.geometry)
return;
geom = options.data.geometry;
if (geom[i] != '+' && geom[i] != '-')
{
ptr = geom + i;
w = atoi (ptr);
while (geom[i] && geom[i] != 'x') i++;
if (!geom[i])
return;
ptr = geom + i + 1;
h = atoi (ptr);
while (geom[i] && geom[i] != '-' && geom[i] != '+') i++;
}
if (geom[i])
{
usexy = TRUE;
ptr = geom + i;
x = atoi (ptr);
i++;
while (geom[i] && geom[i] != '-' && geom[i] != '+') i++;
if (!geom[i])
return;
ptr = geom + i;
y = atoi (ptr);
}
options.data.width = w;
options.data.height = h;
options.data.posx = x;
options.data.posy = y;
options.data.use_posx = options.data.use_posy = usexy;
}
#ifdef HAVE_SPELL
void
show_langs ()
......
......@@ -629,6 +629,8 @@ gchar *escape_char (gchar *str, gchar ch);
gboolean check_complete (GtkEntryCompletion *c, const gchar *key, GtkTreeIter *iter, gpointer data);
void parse_geometry ();
#ifdef HAVE_SPELL
void show_langs ();
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment