Compare commits

...

2 Commits

Author SHA1 Message Date
Corey Berla
49c06f3204 gtkappchooserwidget: Port to GtkListView
This drops the GtkTreeView dependency and the original reason for
deprecation.

Attempted to keep the behavior consistent with the original
implementation:

Sorting - When show_all is FALSE only the Other category is
alphabetically sorted, the other categories keep app info sorting.
When show_all is TRUE, the list is sorted.  One difference is that
in the original implementation, the default app was left as the
first item.  For simplicity (since this was not documented anywhere)
the default app will also be alphabetically sorted, but still
selected by default.

Searching - Type ahead search is maintaining.  It is now
"invisible" (no popover).

Icons - Icons are smaller than in TreeView

Selectability - Now enforces that an item is always selected.
Under certain circumstances the TreeView version would have
no item selected, arguably a bug

All the benefits of list views, proper headers (not fake rows), etc
2024-10-13 14:06:31 -07:00
Corey Berla
526f230a51 gtkappchooserwidget: Remove deprecations
It's worth keeping and used by several projects. In the next
commit we'll port to GtkListView.
2024-10-13 14:06:16 -07:00
7 changed files with 294 additions and 598 deletions

View File

@@ -2,7 +2,6 @@ gtk_deprecated_sources = [
'deprecated/gtkappchooser.c',
'deprecated/gtkappchooserbutton.c',
'deprecated/gtkappchooserdialog.c',
'deprecated/gtkappchooserwidget.c',
'deprecated/gtkassistant.c',
'deprecated/gtkcellarea.c',
'deprecated/gtkcellareabox.c',
@@ -56,7 +55,6 @@ gtk_deprecated_headers = [
'deprecated/gtkappchooser.h',
'deprecated/gtkappchooserbutton.h',
'deprecated/gtkappchooserdialog.h',
'deprecated/gtkappchooserwidget.h',
'deprecated/gtkassistant.h',
'deprecated/gtkcellarea.h',
'deprecated/gtkcellareabox.h',

View File

@@ -41,7 +41,7 @@
#include <gtk/gtkalertdialog.h>
#include <gtk/deprecated/gtkappchooser.h>
#include <gtk/deprecated/gtkappchooserdialog.h>
#include <gtk/deprecated/gtkappchooserwidget.h>
#include <gtk/gtkappchooserwidget.h>
#include <gtk/deprecated/gtkappchooserbutton.h>
#include <gtk/gtkapplication.h>
#include <gtk/gtkapplicationwindow.h>

View File

@@ -42,43 +42,43 @@ typedef struct _GtkAppChooserWidget GtkAppChooserWidget;
GDK_AVAILABLE_IN_ALL
GType gtk_app_chooser_widget_get_type (void) G_GNUC_CONST;
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
GtkWidget * gtk_app_chooser_widget_new (const char *content_type);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
void gtk_app_chooser_widget_set_show_default (GtkAppChooserWidget *self,
gboolean setting);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
gboolean gtk_app_chooser_widget_get_show_default (GtkAppChooserWidget *self);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
void gtk_app_chooser_widget_set_show_recommended (GtkAppChooserWidget *self,
gboolean setting);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
gboolean gtk_app_chooser_widget_get_show_recommended (GtkAppChooserWidget *self);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
void gtk_app_chooser_widget_set_show_fallback (GtkAppChooserWidget *self,
gboolean setting);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
gboolean gtk_app_chooser_widget_get_show_fallback (GtkAppChooserWidget *self);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
void gtk_app_chooser_widget_set_show_other (GtkAppChooserWidget *self,
gboolean setting);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
gboolean gtk_app_chooser_widget_get_show_other (GtkAppChooserWidget *self);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
void gtk_app_chooser_widget_set_show_all (GtkAppChooserWidget *self,
gboolean setting);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
gboolean gtk_app_chooser_widget_get_show_all (GtkAppChooserWidget *self);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
void gtk_app_chooser_widget_set_default_text (GtkAppChooserWidget *self,
const char *text);
GDK_DEPRECATED_IN_4_10
GDK_AVAILABLE_IN_ALL
const char * gtk_app_chooser_widget_get_default_text (GtkAppChooserWidget *self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkAppChooserWidget, g_object_unref)

View File

@@ -164,6 +164,7 @@ gtk_public_sources = files([
'gtkactionbar.c',
'gtkadjustment.c',
'gtkalertdialog.c',
'gtkappchooserwidget.c',
'gtkapplication.c',
'gtkapplicationwindow.c',
'gtkaspectframe.c',
@@ -429,6 +430,7 @@ gtk_public_headers = files([
'gtkactionbar.h',
'gtkadjustment.h',
'gtkalertdialog.h',
'gtkappchooserwidget.h',
'gtkapplication.h',
'gtkapplicationwindow.h',
'gtkaspectframe.h',

View File

@@ -1,22 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface domain="gtk40">
<object class="GtkListStore" id="program_list_store">
<columns>
<column type="GAppInfo"/>
<column type="GIcon"/>
<column type="gchararray"/>
<column type="gchararray"/>
<column type="gchararray"/>
<column type="gboolean"/>
<column type="gboolean"/>
<column type="gchararray"/>
<column type="gboolean"/>
<column type="gboolean"/>
</columns>
</object>
<object class="GtkTreeModelSort" id="program_list_sort">
<property name="model">program_list_store</property>
</object>
<template class="GtkAppChooserWidget" parent="GtkWidget">
<child>
<object class="GtkOverlay" id="overlay">
@@ -27,51 +10,42 @@
<property name="hscrollbar-policy">2</property>
<property name="has-frame">1</property>
<child>
<object class="GtkTreeView" id="program_list">
<property name="model">program_list_sort</property>
<property name="headers-visible">0</property>
<signal name="row-activated" handler="program_list_selection_activated" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection2">
<property name="mode">2</property>
<signal name="changed" handler="refresh_and_emit_app_selected" object="GtkAppChooserWidget" swapped="yes"/>
<object class="GtkListView" id="program_list">
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[
<interface>
<template class="GtkListItem">
<property name="child">
<object class="GtkBox">
<property name="spacing">6</property>
<child>
<object class="GtkImage">
<binding name="gicon">
<closure type="GIcon" function="get_icon">
<lookup name="item">GtkListItem</lookup>
</closure>
</binding>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="xalign">0</property>
<binding name="label">
<closure type="gchararray" function="get_description">
<lookup name="item">GtkListItem</lookup>
</closure>
</binding>
</object>
</child>
</object>
</property>
</template>
</interface>
]]></property>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="column">
<child>
<object class="GtkCellRendererText" id="padding_renderer"/>
</child>
<child>
<object class="GtkCellRendererText" id="heading">
<property name="ypad">6</property>
<property name="wrap-mode">0</property>
<property name="wrap-width">350</property>
</object>
<attributes>
<attribute name="visible">6</attribute>
<attribute name="markup">7</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererText" id="secondary_padding"/>
</child>
<child>
<object class="GtkCellRendererPixbuf" id="app_icon"/>
<attributes>
<attribute name="gicon">1</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererText" id="app_name">
<property name="ellipsize">3</property>
</object>
<attributes>
<attribute name="markup">3</attribute>
</attributes>
</child>
</object>
</child>
</property>
<signal name="activate" handler="program_list_selection_activated" swapped="no"/>
</object>
</child>
</object>

View File

@@ -68,7 +68,6 @@ gtk/css/gtkcssdataurl.c
gtk/deprecated/gtkappchooserbutton.c
gtk/deprecated/gtkappchooser.c
gtk/deprecated/gtkappchooserdialog.c
gtk/deprecated/gtkappchooserwidget.c
gtk/deprecated/gtkassistant.c
gtk/deprecated/gtkcellareabox.c
gtk/deprecated/gtkcellarea.c
@@ -118,6 +117,7 @@ gtk/gtkactionbar.c
gtk/gtkactionmuxer.c
gtk/gtkadjustment.c
gtk/gtkalertdialog.c
gtk/gtkappchooserwidget.c
gtk/gtkapplication.c
gtk/gtkapplication-dbus.c
gtk/gtkapplication-quartz.c