Increase minimum required GTK version to 2.8.

git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@3504 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
Enrico Tröger 2009-01-22 20:33:21 +00:00
parent 4b5e88af2a
commit f7978158a5
11 changed files with 24 additions and 158 deletions

View File

@ -9,6 +9,9 @@
instance which then brings the window to the front (grab focus). This
should work better than the previous implementation and should avoid
the blinking tasklist item.
* HACKING, README, wscript, configure.in, doc/geany.html,
doc/geany.txt, geany.nsi, src/geany.h, src/notebook.c, src/utils.c:
Increase minimum required GTK version to 2.8.
2009-01-22 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>

20
HACKING
View File

@ -91,28 +91,28 @@ If you're in any doubt when making changes to plugin API code, just ask us.
Glade
-----
Use the code generation features of Glade instead of editing interface.c
or support.c. Glade 2.10 is recommended as long as we support GTK+ 2.6,
because later versions of Glade are not 100% compatible with GTK+ 2.6
(e.g. they may use functions added in GTK+ 2.8).
or support.c. Glade 2.12 is recommended as long as we support GTK+ 2.8,
because later versions of Glade are not 100% compatible with GTK+ 2.8
(e.g. they may use functions added in GTK+ 2.10).
You can build Glade 2.10 and run the binary in place, without installing
You can build Glade 2.12 and run the binary in place, without installing
it - this should work fine even if you have another version of Glade
installed on the system.
GTK API documentation
---------------------
The official GTK 2.6 API documentation is not available online anymore,
The official GTK 2.8 API documentation is not available online anymore,
so we put them on http://www.geany.org/manual/gtk/.
There is also a tarball with all available files for download and use
with devhelp.
Using the 2.6 API documentation of the GTK libs (including GLib, GDK and
Using the 2.8 API documentation of the GTK libs (including GLib, GDK and
Pango) has the advantages that you don't get confused by any newer API
additions and you don't have to take care about whether you can use
them or not.
This is because Geany depends on GTK 2.6. API symbols from newer
This is because Geany depends on GTK 2.8. API symbols from newer
GTK/GLib versions should be avoided to keep the source code building
against GTK 2.6.
against GTK 2.8.
Coding
------
@ -120,8 +120,8 @@ Coding
them down into smaller static functions where possible. This makes code
much easier to read and maintain.
* Use GLib types and functions - e.g. g_free instead of free.
* Your code should build against GLib 2.6 and GTK 2.6. At least for the
moment, we want to keep the minimum requirement for GTK at 2.6 (of
* Your code should build against GLib 2.8 and GTK 2.8. At least for the
moment, we want to keep the minimum requirement for GTK at 2.8 (of
course, you can use the GTK_CHECK_VERSION macro to protect code using
later versions).
* We currently try to support the old GCC 2.9.x compiler,

2
README
View File

@ -28,7 +28,7 @@ The basic features of Geany are:
Requirements
------------
For compiling Geany yourself, you will need the GTK (>= 2.6.0) libraries
For compiling Geany yourself, you will need the GTK (>= 2.8.0) libraries
and header files. You will also need its dependency libraries and header
files, such as Pango, Glib and ATK. All these files are available at
http://www.gtk.org.

View File

@ -128,7 +128,7 @@ fi
# GTK checks
gtk_modules="gtk+-2.0 >= 2.6.0"
gtk_modules="gtk+-2.0 >= 2.8.0"
PKG_CHECK_MODULES(GTK, [$gtk_modules])
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)

View File

@ -6,7 +6,7 @@
<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
<title>Geany</title>
<meta name="authors" content="Enrico Tröger Nick Treleaven Frank Lanitz" />
<meta name="date" content="2009-01-17" />
<meta name="date" content="2009-01-22" />
<style type="text/css">
/*
@ -139,7 +139,7 @@ Stylesheet for Geany's documentation based on a version of John Gabriele.
<br />Nick Treleaven
<br />Frank Lanitz</td></tr>
<tr><th class="docinfo-name">Date:</th>
<td>2009-01-17</td></tr>
<td>2009-01-22</td></tr>
<tr><th class="docinfo-name">Version:</th>
<td>0.16</td></tr>
</tbody>
@ -457,7 +457,7 @@ The latest version can always be found at <a class="reference external" href="ht
<h1><a class="toc-backref" href="#id14">Installation</a></h1>
<div class="section" id="requirements">
<h2><a class="toc-backref" href="#id15">Requirements</a></h2>
<p>You will need the GTK (&gt;= 2.6.0) libraries and their dependencies
<p>You will need the GTK (&gt;= 2.8.0) libraries and their dependencies
(Pango, GLib and ATK). Your distro should provide packages for these,
usually installed by default. For Windows, you can download an installer
which bundles these libraries from the website.</p>
@ -469,7 +469,7 @@ incomplete list see <a class="reference external" href="http://www.geany.org/Dow
</div>
<div class="section" id="source-compilation">
<h2><a class="toc-backref" href="#id17">Source compilation</a></h2>
<p>For compiling Geany yourself, you will need the GTK (&gt;= 2.6.0)
<p>For compiling Geany yourself, you will need the GTK (&gt;= 2.8.0)
libraries and header files. You will also need the Pango, GLib and
ATK libraries and header files. All these files are available at
<a class="reference external" href="http://www.gtk.org">http://www.gtk.org</a>, but very often your distro will provide development
@ -4669,7 +4669,7 @@ USE OR PERFORMANCE OF THIS SOFTWARE.</p>
<div class="footer">
<hr class="footer" />
<a class="reference external" href="geany.txt">View document source</a>.
Generated on: 2009-01-17 18:42 UTC.
Generated on: 2009-01-22 20:17 UTC.
Generated by <a class="reference external" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference external" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div>

View File

@ -100,7 +100,7 @@ Installation
Requirements
------------
You will need the GTK (>= 2.6.0) libraries and their dependencies
You will need the GTK (>= 2.8.0) libraries and their dependencies
(Pango, GLib and ATK). Your distro should provide packages for these,
usually installed by default. For Windows, you can download an installer
which bundles these libraries from the website.
@ -116,7 +116,7 @@ incomplete list see http://www.geany.org/Download/ThirdPartyPackages.
Source compilation
------------------
For compiling Geany yourself, you will need the GTK (>= 2.6.0)
For compiling Geany yourself, you will need the GTK (>= 2.8.0)
libraries and header files. You will also need the Pango, GLib and
ATK libraries and header files. All these files are available at
http://www.gtk.org, but very often your distro will provide development

View File

@ -303,7 +303,7 @@ SectionEnd
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Manual in Text and HTML format."
!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "Symbol lists necessary for auto completion of symbols."
!ifdef INCLUDE_GTK
!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "You need this files to run Geany. If you have already installed a GTK Runtime Environment (2.6 or higher), you can skip it."
!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "You need this files to run Geany. If you have already installed a GTK Runtime Environment (2.8 or higher), you can skip it."
!endif
!insertmacro MUI_DESCRIPTION_TEXT ${SEC07} "Add context menu item 'Open With Geany'"
!insertmacro MUI_DESCRIPTION_TEXT ${SEC08} "Create shortcuts for Geany on the desktop and in the Quicklaunch Bar"

View File

@ -101,12 +101,6 @@ enum
};
/* Useful for some variable argument list functions, e.g. in utils.h */
#if ! GLIB_CHECK_VERSION(2, 8, 0)
#define G_GNUC_NULL_TERMINATED
#endif
/* prototype is here so that all files can use it. */
void geany_debug(gchar const *format, ...) G_GNUC_PRINTF (1, 2);

View File

@ -58,12 +58,6 @@ static void
notebook_page_reordered_cb(GtkNotebook *notebook, GtkWidget *child, guint page_num,
gpointer user_data);
#if ! GTK_CHECK_VERSION(2, 8, 0)
static gboolean
notebook_motion_notify_event_cb(GtkWidget *widget, GdkEventMotion *event,
gpointer user_data);
#endif
static void
on_window_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context,
gint x, gint y, GtkSelectionData *data, guint info,
@ -248,24 +242,6 @@ static void setup_tab_dnd()
/* Set up drag movement callback */
g_signal_connect(notebook, "drag-motion", G_CALLBACK(notebook_drag_motion_cb), NULL);
/* There is a bug on GTK 2.6 with drag reordering of notebook tabs.
* Clicking (not dragging) on a notebook tab, then making a selection in the
* Scintilla widget will cause a strange selection bug.
* It seems there is a conflict; the drag cursor is shown,
* and the selection is blocked; however, when releasing the
* mouse button, the selection continues.
* Bug is present with gtk+2.6.8, not gtk+2.8.x - ntrel */
#if ! GTK_CHECK_VERSION(2, 8, 0)
/* handle higher gtk+ runtime than build environment */
if (gtk_check_version(2, 8, 0) != NULL) /* null means version ok */
{
/* workaround GTK+2.6 drag start bug when over sci widget: */
gtk_widget_add_events(notebook, GDK_POINTER_MOTION_MASK);
g_signal_connect(notebook, "motion-notify-event",
G_CALLBACK(notebook_motion_notify_event_cb), NULL);
}
#endif
/* set up drag motion for moving notebook pages */
gtk_drag_dest_set(notebook, GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_DROP,
drag_targets, G_N_ELEMENTS(drag_targets), GDK_ACTION_MOVE);
@ -275,37 +251,6 @@ static void setup_tab_dnd()
}
#if ! GTK_CHECK_VERSION(2, 8, 0)
/* This is used to disable tab DnD when the cursor is over the
* Scintilla widget, and re-enable tab DnD when over the notebook tabs
*/
static gboolean
notebook_motion_notify_event_cb(GtkWidget *widget, GdkEventMotion *event,
gpointer user_data)
{
static gboolean drag_enabled = TRUE; /* stores current state */
GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(main_widgets.notebook),
gtk_notebook_get_current_page(GTK_NOTEBOOK(main_widgets.notebook)));
if (page == NULL || event->x < 0 || event->y < 0) return FALSE;
if (event->window == page->window) /* cursor over sci widget */
{
if (drag_enabled) gtk_drag_source_unset(widget); /* disable */
drag_enabled = FALSE;
}
else /* assume cursor over notebook tab */
{
if (! drag_enabled)
gtk_drag_source_set(widget, GDK_BUTTON1_MASK,
drag_targets, G_N_ELEMENTS(drag_targets), GDK_ACTION_MOVE);
drag_enabled = TRUE;
}
return FALSE; /* propagate event */
}
#endif
static void
notebook_page_reordered_cb(GtkNotebook *notebook, GtkWidget *child, guint page_num,
gpointer user_data)

View File

@ -1191,82 +1191,6 @@ gchar **utils_strv_new(const gchar *first, ...)
}
#if ! GLIB_CHECK_VERSION(2, 8, 0)
/* Taken from GLib SVN, 2007-03-10 */
/**
* g_mkdir_with_parents:
* @pathname: a pathname in the GLib file name encoding
* @mode: permissions to use for newly created directories
*
* Create a directory if it doesn't already exist. Create intermediate
* parent directories as needed, too.
*
* Returns: 0 if the directory already exists, or was successfully
* created. Returns -1 if an error occurred, with errno set.
*
* Since: 2.8
*/
int
g_mkdir_with_parents (const gchar *pathname,
int mode)
{
gchar *fn, *p;
if (pathname == NULL || *pathname == '\0')
{
errno = EINVAL;
return -1;
}
fn = g_strdup (pathname);
if (g_path_is_absolute (fn))
p = (gchar *) g_path_skip_root (fn);
else
p = fn;
do
{
while (*p && !G_IS_DIR_SEPARATOR (*p))
p++;
if (!*p)
p = NULL;
else
*p = '\0';
if (!g_file_test (fn, G_FILE_TEST_EXISTS))
{
if (g_mkdir (fn, mode) == -1)
{
int errno_save = errno;
g_free (fn);
errno = errno_save;
return -1;
}
}
else if (!g_file_test (fn, G_FILE_TEST_IS_DIR))
{
g_free (fn);
errno = ENOTDIR;
return -1;
}
if (p)
{
*p++ = G_DIR_SEPARATOR;
while (*p && G_IS_DIR_SEPARATOR (*p))
p++;
}
}
while (p);
g_free (fn);
return 0;
}
#endif
/**
* Create a directory if it doesn't already exist.
* Create intermediate parent directories as needed, too.

View File

@ -173,7 +173,7 @@ def configure(conf):
# checked with cc not cxx
conf.check_tool('compiler_cxx intltool misc')
conf.check_cfg(package='gtk+-2.0', atleast_version='2.6.0', uselib_store='GTK',
conf.check_cfg(package='gtk+-2.0', atleast_version='2.8.0', uselib_store='GTK',
mandatory=True, args='--cflags --libs')
# GTK version check