@@ -1540,19 +1540,30 @@ bool sc_snap_to_page(girara_session_t* session, girara_argument_t* UNUSED(argume
1540
1540
1541
1541
bool sc_file_chooser (girara_session_t * session , girara_argument_t * UNUSED (argument ), girara_event_t * UNUSED (event ),
1542
1542
unsigned int UNUSED (t )) {
1543
- GtkFileChooserNative * native ;
1544
- GtkFileChooser * chooser ;
1545
- gint res ;
1543
+ g_return_val_if_fail ( session != NULL , false) ;
1544
+ g_return_val_if_fail ( session -> global . data != NULL , false) ;
1545
+ zathura_t * zathura = session -> global . data ;
1546
1546
1547
- native = gtk_file_chooser_native_new ("Open File" , NULL , GTK_FILE_CHOOSER_ACTION_OPEN , "_Open" , "_Cancel" );
1548
- chooser = GTK_FILE_CHOOSER ( native );
1547
+ GtkFileChooserNative * native =
1548
+ gtk_file_chooser_native_new ("Open File" , NULL , GTK_FILE_CHOOSER_ACTION_OPEN , "_Open" , "_Cancel" );
1549
+ GtkFileChooser * chooser = GTK_FILE_CHOOSER (native );
1550
+
1551
+ GtkFileFilter * filter = gtk_file_filter_new ();
1552
+ girara_list_t * mime_types = zathura_plugin_manager_get_content_types (zathura -> plugins .manager );
1553
+ if (mime_types ) {
1554
+ for (size_t idx = 0 ; idx != girara_list_size (mime_types ); ++ idx ) {
1555
+ const char * mime_type = girara_list_nth (mime_types , idx );
1556
+ girara_debug ("adding mime type to %s to filter" , mime_type );
1557
+ gtk_file_filter_add_mime_type (filter , mime_type );
1558
+ }
1559
+ gtk_file_chooser_add_filter (chooser , filter );
1560
+ } else {
1561
+ g_object_unref (filter );
1562
+ }
1549
1563
1550
- res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native ));
1564
+ const gint res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native ));
1551
1565
if (res == GTK_RESPONSE_ACCEPT ) {
1552
- char * filename ;
1553
- zathura_t * zathura = session -> global .data ;
1554
-
1555
- filename = gtk_file_chooser_get_filename (chooser );
1566
+ char * filename = gtk_file_chooser_get_filename (chooser );
1556
1567
if (!document_close (zathura , false)) {
1557
1568
g_free (filename );
1558
1569
goto error ;
@@ -1567,7 +1578,7 @@ bool sc_file_chooser(girara_session_t* session, girara_argument_t* UNUSED(argume
1567
1578
}
1568
1579
1569
1580
g_object_unref (native );
1570
- return true;
1581
+ return true;
1571
1582
1572
1583
error :
1573
1584
0 commit comments